perm filename MONCOM.BH[S,DOC]7 blob
sn#260347 filedate 1977-01-24 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00133 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00015 00002 M O N I T O R C O M M A N D M A N U A L
C00020 00003 SECTION 1--INTRODUCTION FOR NEW USERS
C00021 00004 1.1 Introduction to Timesharing
C00030 00005 1.2 Timesharing at the AI Lab
C00038 00006 1.3 Introduction to Terminals
C00046 00007 1.4 Typing Commands to the Monitor
C00052 00008 1.5 File Storage
C00062 00009 1.6 LOGIN and KJOB Commands
C00065 00010 1.7 Editing Commands
C00070 00011 1.8 Commands for Compiling and Running Programs
C00074 00012 1.9 Information Commands
C00076 00013 1.10 Programs and Core Images
C00080 00014 SECTION 2--DISPLAY TERMINALS
C00081 00015 2.1 Keyboards
C00088 00016 2.2 The Line Editor
C00099 00017 2.3 Line Editor Activation
C00106 00018 2.4 ESCAPE and BREAK Commands
C00111 00019 2.5 The WHO Line
C00121 00020 2.6 Page Printer Control
C00127 00021 2.7 Data Disc Control
C00143 00022 2.8 III Control
C00145 00023 2.9 Audio Switch Control
C00150 00024 SECTION 3--TELETYPES AND OTHER NON-DISPLAY TERMINALS
C00159 00025 SECTION 4--BASIC MONITOR COMMANDS
C00160 00026 4.1 Running Programs
C00164 00027 4.2 Manipulating Core Images
C00171 00028 4.3 Starting Programs
C00176 00029 4.4 Detached Jobs
C00181 00030 4.5 Device Control
C00193 00031 4.6 System Information
C00201 00032 4.7 Miscellaneous Commands
C00204 00033 SECTION 5--SYSTEM PROGRAM COMMANDS
C00206 00034 5.1 LOGIN
C00226 00035 5.2 LOGOUT
C00232 00036 5.3 SNAIL
C00235 00037 5.4 COPY and SPOOL
C00238 00038 5.5 MAIL
C00241 00039 5.6 DART
C00242 00040 5.7 DO
C00248 00041 5.8 ZERO
C00250 00042 5.9 WHO
C00258 00043 WHO commands
C00271 00044 5.10 FIND
C00282 00045 5.11 Other System Information Programs
C00287 00046 5.12 Miscellaneous System Programs
C00295 00047 SECTION 6--PRIVILEGED COMMANDS
C00300 00048 APPENDIX 1--SNAIL
C00302 00049 SNAIL: EDIT-Class Commands
C00309 00050 SNAIL: COMPILE-Class Commands
C00311 00051 SNAIL: DOCUMENT-Type COMPILE-Class Commands
C00313 00052 SNAIL: LOADBUF-Type COMPILE-Class Commands
C00318 00053 SNAIL: COMPILE-Type COMPILE-Class Commands
C00330 00054 SNAIL: More on File Names
C00332 00055 SNAIL: More on Switches
C00334 00056 SNAIL: Concatenation of Source Files
C00337 00057 SNAIL: Producing Symbolic Listings
C00341 00058 SNAIL: Generating Core Images and DMP Files
C00346 00059 SNAIL: Library Searches
C00349 00060 SNAIL: Alternate Processor Features
C00353 00061 SNAIL: Translator Switches
C00355 00062 SNAIL: Loader Switches
C00357 00063 SNAIL: Command Files
C00360 00064 SNAIL: CREF Command
C00361 00065 SNAIL: Switch Function Summary
C00365 00066 SNAIL: LOADER Switches and LINK Equivalents
C00369 00067 SNAIL: Error Messages
C00374 00068 APPENDIX 2--COPY
C00375 00069 COPY: Syntax
C00378 00070 COPY: General Operation
C00388 00071 COPY: Device Peculiarities
C00395 00072 COPY: Switches
C00423 00073 COPY: Monitor Commands
C00426 00074 COPY: Examples
C00429 00075 APPENDIX 3--SPOOL
C00438 00076 SPOOL: Delayed Listing
C00440 00077 SPOOL: Page Selection
C00441 00078 SPOOL: Multiple Copies of a File
C00442 00079 SPOOL: XSPOOL Special Features
C00448 00080 SPOOL: QSPOOL Command
C00450 00081 SPOOL: UNSPOOL Command
C00452 00082 APPENDIX 4--MAIL
C00453 00083 MAIL: The MAIL program
C00460 00084 MAIL: Command Format
C00468 00085 MAIL: Destinations and Destination Lists
C00478 00086 MAIL: Message Formats
C00487 00087 MAIL: Message File Formats
C00490 00088 MAIL: Command Switches
C00504 00089 MAIL: Dates and Times
C00513 00090 MAIL: Wildcard Dates and Expiration Counts
C00516 00091 MAIL: Mail to Other ARPA Network Hosts
C00527 00092 MAIL: The MAIL Command
C00532 00093 MAIL: The SEND Command
C00535 00094 MAIL: The REMIND Command
C00537 00095 MAIL: The GRIPE Command
C00538 00096 MAIL: The EVENT Command
C00542 00097 MAIL: The PLAN Command
C00545 00098 MAIL: The RETRY Command
C00546 00099 MAIL: The LATER Command
C00552 00100 MAIL: The BATCH Command
C00558 00101 MAIL: The REENTER Error Recovery Facility
C00563 00102 MAIL: Hand-Holding Mode
C00565 00103 MAIL: Interfacing to MAIL from Other Programs
C00575 00104 MAIL: The CANCEL Command
C00577 00105 MAIL: The RCV Command
C00601 00106 APPENDIX 5--DART
C00608 00107 APPENDIX 6--SERVICE LEVEL SYSTEM (RSL)
C00614 00108 Service Level System: Using the RSL Program
C00616 00109 Service Level System: IMPORTANT!
C00617 00110 Service Level System: How to Reserve Devices
C00619 00111 Service Level System: Other Commands Available
C00623 00112 Service Level System: RSL Command Syntax
C00626 00113 Service Level System: Semantics
C00629 00114 APPENDIX 7--FIXIMLAC
C00631 00115 APPENDIX 8--ARPA NETWORK
C00634 00116 ARPA Network: Glossary
C00643 00117 ARPA Network: The User TELNET
C00649 00118 ARPA Network: Control Commands to TELNET, PTYJOB, and DIAL
C00659 00119 ARPA Network: The File Transfer Protocol
C00680 00120 ARPA Network: Multiple File Transfer
C00695 00121 ARPA Network: Connection Error Messages
C00700 00122 APPENDIX 9--CARE AND FEEDING OF DEVICES
C00701 00123 Care and Feeding of Devices: The Line Printer
C00706 00124 Care and Feeding of Devices: DECtapes
C00708 00125 Care and Feeding of Devices: Magnetic Tapes
C00713 00126 Care and Feeding of Devices: Xerox Graphics Printer
C00719 00127 Care and Feeding of Devices: User Disk Pack
C00724 00128 Care and Feeding of Devices: Core Storage
C00729 00129 APPENDIX 10--RELOADING THE SYSTEM
C00734 00130 APPENDIX 11--MONITOR ERROR MESSAGES
C00782 00131 APPENDIX 12--BIBLIOGRAPHY
C00786 00132 APPENDIX 13--STANFORD CHARACTER SET
C00793 00133 INDEX
C00823 ENDMK
C⊗;
M O N I T O R C O M M A N D M A N U A L
(Third Edition)
by
Brian Harvey
edited by
Martin Frost
STANFORD ARTIFICIAL INTELLIGENCE LABORATORY June, 1976
OPERATING NOTE 54.5
ABSTRACT
This document describes the monitor commands available to users of the
Stanford Artificial Intelligence Laboratory timesharing system, and the use
of the terminals connected to this system. The first section is an
introduction to the system for new users. Several appendices are included
containing documentation of commonly used system programs. This manual
supersedes SAILON 54.4.
This work was supported by the Advanced Research Projects Agency of the
Office of the Secretary of Defense under contract DAHC15-73-C-0435.
PREFACE TO THE THIRD EDITION
As this edition goes to press, we foresee a large number of changes to the
Stanford system that will affect the content of this manual. The hardware
changes we plan include the addition of a KL10 central processor, the
addition of more core memory, and the probable removal of the PDP-6
processor. Software developments that are expected in the next year include
support for all the new hardware, changes to the swapping algorithms that
will effectively provide an additional disk drive for the file system,
changes to the file system to support the new swapping algorithm, and
paging.
With paging software, consecutive user pages will not need to be allocated
in consecutive physical pages. This core allocation scheme will eliminate
system overhead that presently occurs due to core compaction. Hopefully
this improvement will be translated into improved response times and
increased throughput. In the paging system each user will have a 512-page
address space which he may allocate at will. One of the visible changes
that paging will produce will be new monitor commands to interrogate and
modify the status of various pages in a user's core image.
--REG
ACKNOWLEDGMENTS
Several sections of this document were excerpted from program documentation
written by others. Contributors include Ralph Gorin (SPOOL, DART), Mike
Clancy (SNAIL), Dick Helliwell (COPY, DO, ZERO), Martin Frost (WHO, FIND),
Andy Moorer (TELNET), Dan Swinehart (FTP), Jim Stein (RSL), and Bo Eross
(FIXIML). John McCarthy wrote the Introduction to Timesharing section, and
Ralph Gorin and Brian McCune edited and corrected the manual's draft
versions. This document was produced on the Xerox Graphics Printer using
the PUB program written by Larry Tesler and improved by Rich Johnsson, Pitts
Jarvis, and Tovar.
SECTION 1--INTRODUCTION FOR NEW USERS
This manual describes the monitor commands used in the PDP-10 computer
system at the Stanford Artificial Intelligence Laboratory. The first
section is an introduction for new users, including brief explanations of
terminals, file storage, and some of the essential monitor commands. The
computer is operated exclusively as a timesharing system, and the section
begins with an introduction to timesharing.
1.1 Introduction to Timesharing
A timesharing computer system includes the computer itself (in our case a
PDP-10 computer made by the Digital Equipment Corporation), user terminals
for input to and output from the computer (in our case about 60 keyboard and
display terminals), and a file system that keeps programs, data for the
programs, reports, and other data for the users.
The basic idea of timesharing is to allow each user to behave as though he
had a computer to himself controlled from his terminal. This is
accomplished by having the computer cycle its attention among the users
wanting service in rotation. It does this fast enough so that small
requests are serviced in a time that ranges from a small fraction of a
second to a few seconds, depending on the number of people demanding service
at that instant. If the desired computation is long, the computer will do a
bit of it, then service other people, then return to it, and so on until the
computation is done. The time taken will depend on the size of the
computation and how busy the machine is.
At any time the user's terminal is interacting with some program. These
programs include the timesharing monitor; editors used to prepare programs,
documents, reports and other data; various utility programs; and the user's
own programs.
When you first sit down at a terminal, you will be interacting with the
monitor, and you can always get back to the monitor by pressing the CALL key
on the terminal. The first thing you have to do is to log in, which tells
the monitor who you are so it can connect you to the file directory that
contains your files and can do its accounting. The last thing you do is log
out so that the terminal and other resources you have been occupying can be
used by someone else.
You will have a certain quota of disk space and will be able to keep files
such as programs between uses of the computer. Therefore, you will not
ordinarily need any external form of storage such as punched cards or
magnetic tape. (Our computer doesn't even have punched card equipment.)
A user gets service from programs by typing commands to the monitor. Some
monitor commands perform the service and leave you again talking to the
monitor. Others cause a program to be started; thereafter, you have to
interact with that program in the way prescribed by it. When you are done
with it, you go back to the monitor.
Your program also gets service from the monitor by means of special
instructions, called UUOs, used in the program. The monitor provides many
different services as a sort of subroutine of your program; most
importantly, it is responsible for allocating resources, like core storage
and input/output devices, among different jobs. Therefore, input and output
must be done through the monitor to avoid conflicts. These UUOs are
documented in their own manual; this one is about the commands you type at
your terminal.
A typical task is to write a program in some computer language such as SAIL
(our dialect of ALGOL) or LISP and then debug the program by running it,
checking the results, and changing it until it gives the right answers.
This is accomplished in the following steps:
1. First you run an editor. (We have several, but the current favorite is
called E.) The editor reads whatever you type and displays it; what you
type becomes the text of the program you are writing. However, the editor
gives you convenient facilities for going back in your text and making
changes that you think of as you go along. Most people don't write their
programs on paper, but make them up as they use the editor. When the
program is ready to try, you exit from the editor back to the monitor, and
your program is a file on the disk with a name you have given it. At any
time, you can re-edit this file to make changes in it. You can also print
it on the line printer to take a copy home, and when you don't need it any
more you can delete it.
2. Normally, the next step is to call a compiler to translate the program
from a source language into machine language, call the loader to load it
into your core image, and finally ask the computer to run it. You can do
these things as separate operations, but facilities are provided for
initiating all of this with a single command.
3. When the computer runs your program, it may just produce answers and
stop. If you like the answers, perhaps you are done. Otherwise, you go
back to the editor to make changes in the source file and try again. On the
other hand, you may have written an interactive program which expects you to
type input on the terminal. It interprets your input and gives output, then
asks for more input, etc. Your program may read files and write them. It
may display pictures on your terminal. Also, it may interact with the
physical world by reading pictures from one of the TV cameras attached to
the computer and by waving the mechanical arm.
4. In order to debug a program, you may have to do more than just look at
the output. Therefore, the timesharing system has facilities for examining
and changing the contents of registers and for putting break-points in
programs.
1.2 Timesharing at the AI Lab
Our timesharing system runs on a Digital Equipment Corporation (DEC) PDP-10
computer. This is a 36-bit machine designed for timesharing applications.
We currently have 458,752 words of core storage online and expect to have
655,360 words online in the not-too-distant future. Our timesharing system,
derived from old DEC software, has been extensively modified for our special
requirements.
Programming languages available here include SAIL, a version of ALGOL with
added features for backtracking, list processing, associative processing,
and coroutining; several versions of LISP; FAIL, our PDP-10 assembly
language; and the MICRO-PLANNER problem solving language.
To use the computer, you must type a LOGIN command at your terminal. (See
Section 1.6 for a description of this command.) The monitor assigns you a
job number, which it uses internally to keep track of you. Associated with
your job are various resources, of which the most important is the core
image, i.e., the simulated core storage maintained for you by the monitor so
that your program can use addresses starting from zero although it may
really be located anywhere in core while running. Your job only has one
core image; if you type a monitor command which causes a program to be run,
that program replaces your old core image. There is no way for one job to
run two programs at once.
As a user of the Stanford AI Lab system, you will be given a programmer name
to identify you to the computer. The main reason for this is so that the
monitor knows which files on the disk storage belong to you. This name will
probably be your initials. When you log in, you must type in this name,
along with a project name which may identify what project you are working
on. For example, if you are doing homework for a Computer Science course,
the course number might be your project name. The combination is called a
project-programmer name or PPN and is typed PRJ,PRG or sometimes [PRJ,PRG]
when used in a file specification. Project "1" is a popular name with no
special meaning.
Ours is just about the most heavily used computer we know of. It's hard to
get good service, especially weekday afternoons. Therefore, please be
careful about leaving jobs logged in when you leave, and don't play Spacewar
during the day! Even a job which is not running uses up scarce resources.
The system will automatically log out a job which has not run a program for
a half hour (an hour at night), even if the job is waiting for the user to
type something on the terminal. For example, if you are editing a file and
have made changes which have not yet been written on the disk, your changes
will be lost if you are logged out automatically for not running for a
while. A warning message is typed five minutes before the actual logout.
Sometimes the system stops working while you are using it. You will notice
that characters you type no longer appear on your terminal. In many cases,
the system fixes itself after a few seconds, so all that happens is that a
few characters you typed are lost. Otherwise, someone has to go fix it
manually. Sometimes it can be gotten to work again so that you can just
continue with what you were doing. Other times, a new copy of the system is
loaded and you have to start over again. This is called reloading. If this
happens, you will see a message to that effect on your terminal. When
editing, it is a good idea to save your file on the disk every so often in
case the system crashes. If the system crashes and nobody is around to fix
it, you may have to reload it yourself. See Appendix 10 to find out how.
Sometimes the system is stopped intentionally for software or hardware
maintenance. This downtime is scheduled in advance, and part of the system
messages you see when you log in is a maintenance schedule. Some time
before the system is taken down for scheduled maintenance, you will see a
warning on your terminal which counts down to the end. This warns you to
save any files you are writing and stop what you are doing. Such
maintenance is often scheduled between 5 and 7 weekday evenings.
This document, the Monitor Command Manual, describes the use of monitor
commands typed in at terminals. Another manual describes the UUOs,
instructions used by programs to communicate with the monitor. Other system
information, including documentation of specific system programs, can be
found in some printed manuals and on the disk; look at the [S,DOC] and
[UP,DOC] file directories for program documentation. Some system programs,
which are invoked by special monitor commands, are written up in appendices
to this manual. Most of these appendices are derived from [UP,DOC] files.
Some of those files are updated more frequently than this manual and some
aren't. Caveat emptor.
1.3 Introduction to Terminals
Most terminals on this system are display terminals; the characters you type
appear on a display screen. There are also a few Teletypes, which use
paper, and do not have the full character set of our displays. Teletypes
are rarely used here, although there are a few connected to our system.
There are two kinds of display terminals in use at the lab, Data Discs and
IIIs ("triple-I"). They use the same keyboards, but have different display
screens. The Data Discs, which are more numerous (about 60 of them), use TV
monitors. (The name Data Disc actually refers not to the terminals
themselves, but to the machine in the computer room which controls them.)
The six IIIs are vector plotting displays, used mainly for graphics display
programs like Spacewar. Unless you are writing a display program, the
difference is not too important except that the character set on the IIIs is
less legible than that on the Data Discs.
A vacant terminal should say TAKE ME I'M YOURS! along with a line of
cryptic information on an otherwise blank screen. The cryptic information
is the system WHO line, described on page 19. If it's completely blank,
make sure it's turned on, and that the brightness and contrast (intensity on
IIIs) are turned up. If it says NO DATA DISC CHANNELS LEFT, it means that
the Data Disc, which can run only 31 terminals at once, is full. A terminal
that is not in use is called an available terminal.
Each of the printing character keys on our terminals has two characters
printed on it (except the 0 key). The bottom one is usually a letter or
digit, and the top one is some special character. There are two SHIFT keys
and a SHIFT LOCK key, which make letters upper case. The keys which produce
the special characters are labelled TOP. For example, hitting the "<D" key
alone produces lower case "d"; also holding down SHIFT produces capital "D";
and holding down the TOP key makes it produce "<" (SHIFT and TOP together is
interpreted as TOP).
When you type something on an available terminal, the available message is
replaced by whatever you typed. The characters you type are kept in a
special buffer called your line editor until you activate them by typing
RETURN or one of a few other special characters. The line editor allows you
to change the contents of the line by using special editing command
characters. The characters in the line editor are displayed on the screen
with two cursors: underlines on Data Discs and triangles on IIIs. The left
cursor is underneath the first character in the line editor; the right
cursor is under the place where the next character you type will go
(generally the end of the line). When your line editor is empty, the
cursors coincide. The line editor commands are explained in Section 2.2.
Note: when you type RETURN, the monitor generally supplies a LINE character
automatically. RETURN signifies a return to the left margin, and LINE an
advance to the next line.
To get you started using display terminals before you read about all the
line editor commands, all you need to remember is that the BS key will
delete the last character, and the CLEAR key will delete the entire line.
The CONTROL and META keys are used for other line editor functions.
When you are done with a terminal, be sure to log it out. Also, don't leave
anything in the line editor--type RETURN before you leave if you're not
sure. Your Data Disc channel will be made available soon after you log out,
but not if there is anything in the line editor.
A note on terminology: In the body of this manual, characters are referred
to by the name printed on the keyboard, e.g., RETURN and FORM. In other
documentation, including some of the appendices to this manual, different
notations are used. Some of these are shown here:
function key other notation
break BREAK <BRK> [BRK]
escape ESC <ESC> [ESC] <ESCAPE>
call CALL <CALL> [CALL] ↑C
clear CLEAR [CLEAR] ↑U
tab TAB <TAB> [TAB] <HT>
form feed FORM <FORM> [FORM] <FF>
vertical tab VT <VT>
backspace BS <BS> [BS]
carriage return RETURN [RETURN] <CR> CR
line feed LINE <LF> LF <LINEFEED>
shift SHIFT <SHIFT>
top TOP <TOP>
alt mode ALT <ALT> <ALTMODE> $
meta META <META> β
control CONTROL <CONTROL> <CTRL> α
The combination of RETURN and LINE (remember that LINE is supplied by the
monitor) is sometimes referred to as CRLF.
1.4 Typing Commands to the Monitor
What you type may be read by different programs at different times, so you
should be aware of what program you're talking to. When you first type on a
vacant terminal, you are talking to the monitor's command decoder. You
continue to talk to the monitor until you start running a program; then
you're generally talking to that program. To distinguish these conditions,
the state of the terminal is described as monitor mode or user mode. When
the monitor is ready to read a command from your terminal, it types a
period. Programs usually type some special character(s) to prompt you when
the are ready for a command; many system programs prompt you with an
asterisk.
It is possible to type ahead when the system is not waiting for typein.
Characters you type which are not immediately read by either the monitor or
a program are stored in your terminal's input buffer until they are needed.
Programs can cause this buffer to be cleared. For example, some programs
ask for confirmation of certain commands, e.g., when you specify for output
a filename which already exists. Some such programs clear your input buffer
first and others don't, so you can get confused by typing ahead to a program
whose behavior you don't know. Your input buffer is also cleared when you
type CALL.
Monitor commands consist of the command name, possibly followed by arguments
separated by spaces or punctuation, and then a RETURN. The command may be
typed using upper and lower case letters interchangeably. Monitor command
names may be typed in completely, or they may be abbreviated to only as many
letters as are necessary to make the name unique; for example, the LOAD
command may be abbreviated LOA, but not LO because there is also a LOGIN
command. A few common commands have single-letter abbreviations (L is
accepted to mean LOGIN). Only the first six letters of a command name are
relevant.
Some monitor commands are completely processed by the monitor, without
running a program in your core image. For example, the DAYTIME command
types the current date and time, without disturbing your core image. Most
commands, however, require a program to be run. The monitor usually
requires you to log in before you may run programs; there are a few
exceptions, to permit system information programs like WHO, and of course
the LOGIN program itself. If, when not logged in, you try to run a program
which requires you to be logged in, the monitor automatically runs LOGIN,
which will ask you for your project-programmer name. In this situation,
when LOGIN finishes running, it will re-enter the command which you typed in
the first place, so the command will be performed without making you retype
it. Commands which require login but which refer to a pre-existing core
image rather than running a new program (e.g., START) do not cause this
automatic login, but give an error message.
When you first enter a command which runs a program, the system assigns you
a job number and types a line like
Job 19 Stanford 7.04/K 01-26-75
which tells you what version of the monitor is running and when it was
created, as well as your job number. If it types
Job capacity exceeded
too many jobs are already logged in. When a program like WHO is run without
logging in, the job is killed when the program exits or if the user types
CALL. The LOGIN program, however, leaves you logged in when it exits.
Some of the monitor commands are briefly described starting in Section
1.6. The full descriptions of all the commands are in Sections 4 and 5,
and in the appendices.
1.5 File Storage
A file is a stored collection of information, perhaps a program or data.
Most files are stored on a permanently available disk unit. Files on the
disk must be identified by name and by owner so that you can get at the one
you want. Files on other devices may also be used; we have magnetic tape,
DECtape (a small mag tape unit unique to Digital Equipment Corporation
machines), and paper tape, as well as a line printer and stuff like that.
Whenever a program does input or output, it has to specify the particular
file it wants. A file identifier is typed in the form
DEV:FILNAM.EXT[PRJ,PRG]
some parts of which can be left out. DEV specifies the device you want.
Generally, if you want the disk (DSK), you may leave out the device name.
If you leave out the device name, leave out the colon too. Device names may
include a number to specify a particular unit; thus, TTY is your own
terminal (all terminals used to be Teletypes, and the name stuck), but TTY26
is the one next to the computer console. Besides these physical device
names, you can define logical device names to use in your program. The
monitor command ASSIGN is used to make your logical name refer to some
particular physical device.
Some devices, like the disk, require the use of filenames, and some, like
the line printer, don't. If you specify a filename for a device which
doesn't use one, the name is ignored. Devices which require file names are
called directory devices because they include special files called
directories which tell where the other files are. Files are specified by a
filename, another name called the extension, and, on the disk, a PPN
specifying the file's owner. Letters in the filename are upper case,
although most programs will accept lower case letters. The filename is one
to six letters or digits, and can say anything you want to identify the
file. The extension, which is optional, is one to three characters.
Although the monitor allows any SIXBIT characters (the ones with octal ASCII
codes between 40 and 137--see Appendix 13) to be used in filenames and
extensions, some programs which read filenames use some punctuation
characters as punctuation characters and won't recognize them in filenames.
It is best to stick to letters and digits. If you find that some program
has written a file called @# $!.X ? in your directory and you are having
trouble dealing with it, you will find that several programs, including the
COPY program for file manipulation, use the notation ↓...↓ for such files,
allowing any SIXBIT characters between the downarrows as part of a filename.
(You must, of course, say ↓FILNAM↓.↓EXT↓ if that's what you want, not
↓FILNAM.EXT↓.) The only directory devices in this system are the disk, UDPs
(User Disk Packs), and DECtapes.
The extension of a file is generally one of a standard set used to indicate
what sort of file it is, like SAI for a SAIL program, REL for a relocatable
binary program as produced by a compiler, or DMP for a dumped core image.
Many programs use these standard extensions as defaults, so you often can
type the file name alone.
Disk files require a project-programmer name, which selects the directory to
use for the file (see page 5). If you do not type in a PPN, you generally
get the one you gave to LOGIN. The disk directory for each PPN is called a
UFD (User File Directory); the files in a given directory are also said to
comprise a disk area, although there is not really a physical area involved.
Files are divided into smaller units, called records. The precise meaning
of a record depends on the particular device you are using, but often a
record is the smallest unit of data which the device will transfer to or
from the computer at a time. For example, files on the disk are divided
into 200-word (octal) records. The disk hardware reads or writes one such
record at a time. On magnetic tape, you can write any size records;
however, when you read the tape, each record must be read all at once. The
monitor provides buffering so that your program can deal with the data a
character or a word at a time. The monitor gets a record and stores it for
you.
The following devices are available on this system.
DSK the public disk
SYS same as DSK, but implies PPN [1,3] (system files)
UDP1,2 user disk pack, a disk unit for private disk packs
MTA0,1 magnetic tape drives
DTA1-4 DECtape drives
LPT line printer
XGP Xerox Graphics Printer
IMP Interface Message Processor for ARPA network connections
PTR paper tape reader
PTP paper tape punch; also connected to CALCOMP plotter
DAC digital-to-analog and analog-to-digital converters
TV TV cameras
CAR cart transmitter
TTYn terminals and pseudo-teletypes (see below)
TTY the user's own terminal
CTY PDP-10 console Teletype (also called TTY120 or OPR)
A pseudo-teletype (PTY) is a simulated Teletype-like device used to allow
programs to "type" monitor commands. The program uses special UUOs to
output text to the PTY, which is then seen by the monitor as if it were
typed at another terminal, with its own TTY number. Similarly, text typed
out to the PTY can be read by the controlling program. One user of PTYs is
the program which allows people at other computers to use our system via the
ARPA network (Appendix 8).
Disk files are copied to magnetic tape daily, using the DART program (see
Appendix 5). Monitor commands which run DART can be used to retrieve files
which have been clobbered by system failure (uncommon) or user error.
1.6 LOGIN and KJOB Commands
In this and the following sections, a few of the monitor commands used in
creating and debugging a program are described briefly. More complete
descriptions come later and in other manuals.
The first thing you have to do is log in. The command for this is called
LOGIN, abbreviated L. Your project-programmer name is its argument. (See
page 5 for an explanation of project-programmer names.) If you are named V.
I. Lenin, you might type
L 1/VIL
(The slash means that you don't want to see any system messages which you've
seen before. You could have used a comma to see all messages or a period to
see none at all.) The monitor processes this command by assigning and
typing out a job number, and then starting the LOGIN program in your core
image.
If this is the first time you're logging in, LOGIN will type out
Are you sure?
to which you must type a Y. It will tell you that you are not known as an
authorized user of the system, unless your initials have been added to the
authorized users list. Then you get the messages, and the program exits.
You are now logged in. Section 5.1 explains the LOGIN command more fully.
When you finish doing whatever you want, you should log out. The command
for this is called KJOB, abbreviated K. No arguments are required, just K
and RETURN. (As with all monitor commands, your terminal must be in monitor
mode when the command is given.) This command runs the LOGOUT program,
which types out how much computer time you used, etc., and kills your job.
Your terminal will become available in a few seconds if you don't type
anything else. If there are no files in your directory, the LOGOUT program
deletes the directory. Section 5.2 gives more complete documentation of
the logout procedure.
1.7 Editing Commands
To enter your program, or to correct it, you will use one of our text
editors. There are three editors in common use here:
1. E. This is the one you'll generally use. It is a fast display editor
with many diversified features. It is sometimes called ETV after the
monitor command by which it is invoked.
2. SOS. This editor is designed for use at Teletypes or other non-display
terminals. Files created with SOS include a line number at the beginning of
every line. Editing commands use the line numbers to specify what lines to
change, delete, or whatever. Hopefully you will have no need to use this
editor, since you'll be using display terminals.
3. TECO. This editor is supplied by DEC. It is extremely powerful, in
that it allows you to write editing programs which can process a file
systematically, and it is very flexible about strange characters in the
file. However, for routine editing it is somewhat inconvenient to use
because it does not use the display facility of the terminals.
Each of these editors is described in its own manual. A bibliography is
included as an appendix to this manual. The point to be explained here is
how to use monitor commands to invoke an editor; we'll assume here that
you're using E.
Suppose you want to write a program called PROG in the SAIL programming
language. The monitor command to create a new file with E is CETV. So you
would type
CETV PROG.SAI
(SAI is the standard extension for SAIL programs.) This command tells the
monitor to run E, and tells E to create a new file named PROG.SAI. E
remembers the last editing command you typed, so later you'll be able to
edit the file simply by entering an ETV command without having to type the
file name again. (Note--LOGOUT makes E "forget" your commands, so you have
to type the file name again when you next log in.)
The command for editing an already existing file with E is ETV. You can
enter this command with no argument and it will remember the file from the
last edit command, or you can specify a filename as with the CETV command
above.
The other editors (SOS and TECO) do not read monitor commands themselves.
Instead, the corresponding monitor commands for those editors are
interpreted by the SNAIL program, which then starts the appropriate editor.
Later in this manual the ETV and CETV commands will be referred to as "SNAIL
commands" even though they do not actually run SNAIL, since they carry out
SNAIL-like functions.
There is a file you can edit to learn how to use E. To do this, log in and
enter the following command:
HELP ETEACH
Then just read what appears on your screen and follow instructions. This
command creates a file which you may want to delete when you are done.
1.8 Commands for Compiling and Running Programs
Once you have typed in your program, you have to compile it, load it, and
run it. Compilers like SAIL put out relocatable binary programs. This
means that the program is in a form which contains enough information so
that it can be loaded into any address in core. Addresses within the
program are all considered relative to the program's first word, so the
LOADER has to add the actual address of that word to all the relative
addresses in the program. Your program can be loaded along with others, for
example a debugging program; the actual location of any program in your core
image will depend on what other programs are loaded with it. (Note that
this relocatable binary program format has nothing to do with the hardware
relocation discussed on page 5.) The core image produced by the LOADER can
be saved in a DMP (dump) file, which can then be run directly by a monitor
command without going through the LOADER again.
Suppose you have typed in your program, PROG.SAI. You want to compile,
load, and run it. You could say
EXECUTE PROG
and all those things would happen automatically. SNAIL would generate a
command file for SAIL telling it to compile PROG.SAI and start up the
loader, which also gets a command file. (SNAIL knows that it should use the
SAIL compiler because of the SAI extension in your filename.) Again, SNAIL
remembers the command, so next time you just have to say EXECUTE and it'll
all happen. In fact, the editors all have commands which automatically
re-do the last compile-type SNAIL command.
Suppose, to make this clearer, you find a bug in the program. To fix it,
you can give the monitor command
ETV
and E will start editing PROG.SAI.
Then you use E commands to edit the file. When you're done, you use the
exit-to-SNAIL command, which in E is CONTROL-X GO. This will automatically
repeat the EXECUTE command you typed before.
There are many different versions of this compilation command: COMPILE will
just compile the program, LOAD will compile and load, etc. The SNAIL
commands are listed in Section 5.3 and fully described in Appendix 1.
1.9 Information Commands
You can sometimes find out how to use a system command by typing HELP
followed by the command name. Typing HELP with no argument will list the
kinds of help available this way. For instance, if you forget how to log
in, you can type HELP LOGIN.
To get a list of the files in your directory, type the DIRECTORY command.
You can get the list for another disk area by including a PPN in square
brackets as an argument.
You can see the status of all the jobs on the system with the WHO command,
abbreviated W. You can find out about jobs belonging to a particular user
by typing WHERE prg (prg is the programmer name) or FINGER prg. These type
out information about the given user's jobs; try them to find out more. All
of these commands run programs in your core image, so you shouldn't run them
if you need the program you have there. These information commands can be
run without logging in first.
1.10 Programs and Core Images
This section discusses the allocation and use of core storage for a job.
The PDP-10 storage is divided into pages of 512 words each. Currently,
pages are always allocated in pairs; thus a job's core image is an even
number of pages in size. (Allocation of pages in pairs is expected to
disappear soon.) A job's core image may be located in any set of actual
core pages while the program is running.
Actually, a job may use two distinct sets of core pages, called the lower
and upper segments. The job must have a lower segment in order to run.
This segment belongs to that job alone. If the job has an upper segment, it
may be shared with other jobs. One use of this is to allow several users to
run the same system program with only one copy of the program in core; the
data for the individual users is stored in each job's lower segment, and the
common code is in the upper segment.
An upper segment may be write protected, so the program in it cannot be
accidentally changed. This is usually done with shared upper segments.
Programs can control the write protection of their upper segment by UUO.
Upper segments are more fully explained in the UUO Manual.
Each upper segment has an entry in the system job table, including a job
number, a segment name, and much of the status information associated with
jobs. Some of the monitor commands described in later sections of this
manual refer to upper segments.
The lowest locations in each lower segment, called the Job Data Area, are
used by the monitor to store information about the job. Some of this
information is of interest only to the monitor, while other parts can be
used and modified by the job itself. In particular, some monitor commands
use information from Job Data Area words, e.g., starting addresses for the
program. The description of such commands will refer to the relevant word
by its symbolic name, of the form JOBxxx, e.g., JOBSA is the word containing
the program's normal starting address. The complete description of the Job
Data Area is contained in the UUO Manual.
SECTION 2--DISPLAY TERMINALS
2.1 Keyboards
Our display terminals use a character set called Stanford ASCII. ASCII is a
standard computer character set; our version is similar to the standard but
somewhat extended. In particular, the "control" codes in ASCII, which mean
things like "end of text," are used here for printing characters like α and
∃ and ∩. There are seven bits in a character code; since the PDP-10 has
36-bit words, five characters fit in a word with one bit left over. The
complete Stanford ASCII character set is listed in Appendix 13.
Each of the printing character keys on our terminals has two characters
printed on it (except the 0 key). The bottom one is usually a letter or
digit, and the top one is some special character. There are two SHIFT keys
and a SHIFT LOCK key, which make letters upper case. The keys which produce
the special characters are labelled TOP. For example, hitting the "<D" key
alone produces lower case "d"; also holding down SHIFT produces capital "D";
and holding down the TOP key with it produces "<" (SHIFT and TOP together is
interpreted as TOP).
There are several special character codes, generally not printing
characters, which are not affected by SHIFT and TOP. One is the space bar,
which spaces as on any typewriter. The TAB key sends a tab code, which
prints by spacing out to the next tab stop; these are set eight spaces apart
and cannot be changed. The RETURN key sends a carriage return code, and the
monitor generally provides a line feed code after it automatically. The
LINE key sends a line feed alone; this is not too often useful. The FORM
key sends a form feed code, and the VT key a vertical tab. These two are
used by some programs as control codes, but not often for their printing
effect. The BS key is backspace (in real ASCII this code is called delete).
This code is usually not sent to your program, but is taken by the line
editor as a command to back up the cursor. The ALT key sends an alt mode;
this code has no printing significance, but is used as a control code by
programs.
Although ASCII is a seven-bit code, display terminals actually send nine-bit
codes to programs. The two extra bits represent the CONTROL and META keys.
These keys are like SHIFT and TOP in that they are held down along with some
other key. They have two different functions; when the character they are
used with is sent to a program, it can be used as a control command.
Editing and debugging programs use such single-character commands heavily.
For example, in the E editor, CONTROL-META-D means to delete a line.
However, the CONTROL and META keys are also used as commands to the system
line editor for inserting characters inside a line, etc. The use of the
line editor is explained in Section 2.2.
There are four more keys to be described. They are unusual in that none of
them send characters to your program or to the monitor's command decoder;
they are processed by the monitor's keyboard scanner and the line editor.
CLEAR is simply a line editor command to delete the entire line in the line
editor. CALL is used to interrupt a program running in your core image and
return your terminal to monitor mode. ESC (escape) and BREAK are used to
signal that the characters which follow are a special command to the display
service routines in the monitor; the many different functions of these
commands will be explained in Section 2.4 and following sections. There
should be a list of the ESC and BREAK commands attached to your keyboard; if
not, see page 18 to find out how to print one.
Please note that the ESC and BREAK keys generate codes by themselves; they
are not shift-like keys as CONTROL and META are. Thus, for example,
CONTROL-A means "press the A key while holding down CONTROL," whereas ESC A
means "press ESC and then press A." Also, the ASCII character which is
represented on our keyboards as ALT is sometimes called "escape" (the name
was changed a few years ago; another name for the same function is "prefix")
and is produced by a key marked ESC on some other computer terminals, but
our ESC is not one of the ASCII codes and should not be typed when ALT is
wanted.
2.2 The Line Editor
At a display, the characters you type are accumulated by a part of the
monitor called the line editor. When you end a line by typing an activation
character, the entire line is sent to your program (or to the monitor
command decoder). Generally you will activate a line with the RETURN key,
although others also work. The exact workings of activation are discussed
in Section 2.3, but first, there are several editing command characters
which can be used to change the text in the line editor.
There are two line editor cursors displayed on your screen. The left cursor
is underneath the first character in the line editor and is called the line
cursor. The right cursor is under the character position you are about to
write into and is called the character cursor. The cursors are underlines
on Data Discs, and triangles on IIIs. Also, on IIIs, the characters in the
line editor are displayed somewhat below any other characters on the same
line. If there is no text in the line editor, the two cursors coincide.
On Data Disc terminals, when there is no text in the line editor, you will
sometimes see a "broken" cursor consisting of two very short lines. This
means that the program you are running is waiting for a single character to
be typed, rather than an entire line. The reason for this display is that
many programs ask you yes-or-no questions, and some of them expect you to
type, e.g., Y followed by RETURN while others just wait for the Y. The
broken cursor warns you that a RETURN is not expected. However, it is
possible for programs to wait for a single character in sneaky ways which do
not cause a broken cursor, so the warning is not perfectly reliable.
When you type a normal character into the line editor, it is displayed at
the character-cursor position, replacing any other character which was there
before. The CONTROL and META keys are used to change the function of
characters typed in. Also, several characters have different functions
depending on whether or not they are typed with the character cursor at the
end of the line. For example, BS at the end of the line deletes the last
character; inside the line, it moves the cursor left one position without
deleting anything.
META along with a printing character (including space and tab) inserts that
character at the cursor position, in front of the character already there,
rather than replacing the old character. At the end of the line, a META
character will activate.
BS at the end of the line deletes the last character. If it's not at the
end, BS just backs up the cursor without deleting. People talk about
deleting backspace and non-deleting backspace to distinguish these.
CONTROL-BS is always non-deleting, and META-BS is always deleting.
(CONTROL-META-BS, like CONTROL-META-anything, is not a line editor command
but an activation character.)
CONTROL-SPACE is the opposite of CONTROL-BS: it moves the cursor forward
without changing the text. SPACE alone and META-SPACE act like any printing
character. At the end of the line, CONTROL-SPACE does nothing (it neither
moves the cursor nor activates).
The remaining editing commands consist of CONTROL-something. Some of them
are only considered as line editor commands inside a line; at the end of the
line, they activate. Whether or not this is true for a particular command
will be mentioned in each description.
CONTROL-TAB moves the cursor to the end of the line, as if you typed
CONTROL-SPACE many times. (Inside the line only.)
CONTROL-FORM is the opposite: it moves the cursor to the beginning of the
line, so the two cursors coincide. (Inside or end of the line is ok for
this one.)
CONTROL-D deletes the character above the character cursor. (Inside only.)
Note that this is different from META-BS, which deletes the character to the
left of the cursor.
CONTROL-S skips ahead from the current position of the character cursor to
the next occurrence of the character you type next. If the next character
you type does not occur to the right of the cursor, nothing happens. If the
search character is a letter, the case must match. (Inside only.)
CONTROL-K is like CONTROL-S but instead of moving the cursor it kills
characters up to (not including) the one you select. Again, nothing happens
if the character does not occur. (Inside only.)
CONTROL-R repeats the last CONTROL-S or CONTROL-K command given. It does
not use the following character as an argument, since it remembers the
argument from the CONTROL-S or CONTROL-K command. (Inside only.)
CONTROL-I enters insert mode. In this mode, all characters are treated as
if you were holding down the META key, until you leave insert mode by typing
another CONTROL command, META-character, or an activation character. That
is, after CONTROL-I, normal characters typed are inserted instead of
overwriting old ones, and BS is a deleting backspace. (Inside only.)
CONTROL-number (that is, any decimal number typed while holding down the
CONTROL key) will cause a CONTROL command immediately following to be
repeated that many times. For example, CONTROL-5 CONTROL-BS will move the
cursor left five positions. This can be used to repeat the BS command as
well as CONTROL-BS, META-BS, CONTROL-SPACE, CONTROL-D, CONTROL-S (finds the
nth occurrence), CONTROL-K, and CONTROL-R.
CLEAR will delete everything in the line editor.
CONTROL-RETURN will retrieve the last line which was edited, as long as you
haven't typed anything since then. That is, after you activate a line, if
the very next character you type is CONTROL-RETURN, the line is returned to
the line editor. You can send the same line again by just typing RETURN, or
you can edit it. This is very handy when a monitor command, for example,
fails because of a spelling error; you can simply say CONTROL-RETURN,
correct the error, and say RETURN to activate the corrected command.
The TAB character is treated in a special way by the line editor. Commands
like CONTROL-SPACE treat a TAB as a single character, so a CONTROL-SPACE
when the cursor points to a TAB will move several spaces to the right.
Typing a character without control bits, however, only replaces the first
space of the TAB. There will still be a TAB in the buffer, unless the TAB
was positioned so that it was only equivalent to one space, in which case it
goes away completely when another character is typed over it.
2.3 Line Editor Activation
This section is about the workings of line editor activation: how the line
editor decides to release characters to your terminal input buffer. There
is quite a bit of arcane detail here, covering special cases, which is not
generally important to the user. This section can be skipped by most
readers.
The activation mechanism can be controlled to some extent by UUOs given by
your program. Specifically, your terminal can be in normal activation mode
or special activation mode. In the latter case, your program determines
exactly which characters activate. The program can also disable the
CONTROL-RETURN function, as well as the automatic insertion of line feed
after return. Also, programs can choose to activate on any character at
all, or to allow activation on characters which are normally line editor
commands. However, the rest of this discussion assumes you are in normal
activation mode.
Any character with CONTROL or META on will activate unless it is taken as a
meaningful line editor command. In particular, META will activate at the
end of the line. CONTROL always activates on characters which are not
meaningful line editor commands, e.g., CONTROL-A always activates, and
CONTROL-D activates at the end of the line only. CONTROL-META together
always activates. RETURN, LINE, and ALT always activate, regardless of the
CONTROL and META bits used. (Actually, in the case of RETURN, it is the
line feed, supplied by the monitor, which is really the activation
character.)
When you type an activation character, all the characters in the line editor
are transferred to your terminal's input buffer and are no longer editable.
If your program is doing line-at-a-time input, the character which activated
the line editor may or may not be an activator for your program. (Normally,
line editor activation characters also activate the program, but this may be
changed with special activation. For example, the line editor cannot store
characters with control bits, so such characters always activate the line
editor if they are not line editor commands. Your program may, however,
choose not to be activated by such characters, in which case they remain in
your input buffer until a character which does activate the program is
read.) When you type a program activation character inside a line, all
characters in the line editor are moved to your input buffer, but your
program can only read (in line mode) characters up to the activation
character. The program may ask to get a nine-bit representation for the
characters, so the CONTROL and META bits of the activation character are
sent. There is a special kludge in the line editor so that whenever you
type RETURN (without CONTROL or META), the RETURN is put at the end of the
line, as if you had typed CONTROL-TAB first. This is not true for other
activation characters, so characters after the activation character won't be
editable, but won't be available to the program either until you activate
again. Most programs are written so that something fairly intuitive happens
when you activate in the middle of the line, but it is possible to confuse
yourself. In particular, when you re-edit (by typing CONTROL-RETURN) a line
which was activated with something other than RETURN, the activation
character appears in the line (without control bits); if you type RETURN,
you get the same old activation character, not a RETURN at all! There are
some peculiar things which happen if you delete the old activation character
first, though--it is possible to have the RETURN activate the line editor,
but not put in any activation character and not actually activate your
program until you type a second RETURN.
2.4 ESCAPE and BREAK Commands
Certain special characters are used to control the status of your display
terminal. These are processed directly by the monitor's keyboard scanner,
whether or not you are in monitor mode. One example, mentioned above, is
CALL. This key stops your program, if one is running, and returns you to
monitor mode. You can also type CONTROL-CALL or META-CALL for a deferred
call--the program is stopped when it tries to read the CALL character from
your input buffer. Thus you can type some commands into a program, followed
by a deferred call; when the program is finished with your commands and asks
for more, it will be stopped.
There are several commands using the ESC and BREAK keys. Generally, the
format is ESC or BREAK, then possibly a numeric argument, then a letter
which specifies the command. There should be a concise summary of these
commands attached to your keyboard; if not, log in and type this:
HELP DDKEY
(or IIIKEY instead of DDKEY if you are using a III terminal) to print the
list on the XGP.
ESC O will stop typeout from your program. Any characters already in your
output buffer are deleted, and any attempted typeout from your program is
ignored. The program continues running, however. Typeout is resumed if you
type BREAK O, or if your program reads any characters from your terminal.
Display terminals are normally in full character set mode, which means you
can type in upper and lower case letters. You can leave this mode by typing
BREAK F, which has essentially the same effect as pushing the SHIFT LOCK
key. You type ESC F to return to full character set mode. The only use for
this that I know of is that you can convert a line of text in a file to
upper case in E by typing BREAK F, then something like CONTROL-SPACE to load
the line into the line editor, then RETURN. Try it.
Some programs which read data from your terminal expect an "end of file"
indication after the data. The thing to type to supply this signal is
CONTROL-META-LINE.
It is possible to suspend typeout from your program temporarily without
losing output, as with ESC O. Typing CONTROL-BREAK starts this automatic
holding. The word HOLDING appears at the top of your screen, and the
program is stopped if it tries to type more characters than fit in your
output buffer. Automatic holding is released by typing any line editor
activation character, or CONTROL-CLEAR.
Sometimes you may want to write a program which you can interrupt with a
signal from your keyboard, without having to keep checking for terminal
input in the program. For example, if you run a program which searches a
large data base by command, you may want to be able to abort a search
without stopping the program. Typing ESC I will generate an interrupt
condition which your program may enable; the use of program interrupts is
described in the UUO Manual.
2.5 The WHO Line
The next set of commands have to do with the WHO line, a display of system
status and the status of a particular job on the top two lines of your
screen. Once you start a WHO line display, it is automatically updated
until you turn it off explicitly. To start a WHO line for the job at your
terminal, type ESC W. You can see the WHO line for another job, job number
n, by typing ESC n W. To turn off your WHO line display, type BREAK W.
(Note: this does not actually make the WHO line disappear on Data Discs,
where anything you display stays on the screen until it is explicitly
erased.)
One use of the WHO line is to keep track of the progress of a job of yours
other than the one at the terminal you're using. To facilitate this, typing
ESC Q will display the WHO line of the next job in the monitor's job table
with your programmer name (or with the same name as the job whose WHO line
you are already displaying, if any). Typing ESC Q repeatedly will cycle
through all such jobs. BREAK Q does the same thing, except that it searches
the job table backwards.
This is the format of the WHO line:
III DD JBS,TCOR R,RCOR UCOR NL% DSKQ DATE DAY TIME
JOB PPN TTY# QUEUE JOBNAM SIZE RUNTIME-RP XTIME-XP DSK SEG (ALIAS)
The first line is the system WHO line:
III number of III terminals in use (maximum=6)
DD number of Data Disc channels in use (maximum=31)
JBS number of jobs logged in
TCOR total core of all jobs (including those swapped out) in
512-word pages
R number of jobs actually run in the last few seconds
RCOR total core of the jobs counted in R
UCOR amount of core available for running user jobs
NL system null-time percentage over the last few seconds
DSKQ number of jobs waiting to use the disk
DATE today
DAY day of the week
TIME time of day (24-hr clock)
The second line refers to a particular job:
JOB the job number of the job being displayed
PPN its logged-in project-programmer name
TTY its terminal number (in octal) or DET for detached jobs
# "#" is displayed if the WHO line is not for this TTY's job
QUEUE the system queue that the job is in (see below)
JOBNAM the program being run
SIZE size of the job's core image
RUNTIME total run time since login, in minutes and seconds
RP RUNTIME expressed as a percentage of the job's total wait time
(time the job was runnable but not running)
XTIME incremental runtime, normally reset on terminal input but see
below
XP XTIME as a percentage of incremental wait time
DSKOPS number of incremental disk operations (reset along with XTIME)
SEGNAM name of upper segment if any
ALIAS disk PPN (see below), if any
Some of these need more explanation. The QUEUE is an indication of the
immediate status of the job--is it runnable, waiting for input, stopped,
etc. These are the possible queue names:
RUNQ The job is runnable and not waiting for I/O, etc.
TQ This is a high-priority run queue which jobs are in for a short
time after leaving certain kinds of I/O wait.
STOP The job is stopped because it exited, the user typed CALL, or
there was an error in running the job.
NULQ The job has no core image.
IOWQ The job is waiting for some input/output operation, or for the
completion of a SLEEP or JOBRD UUO. This most often means that
the job is waiting for the user to type something.
DIOW The job is waiting for some I/O operation and may not be
swapped out until it is completed.
INTW The job has suspended itself waiting for an interrupt.
DWQ The job is waiting for a device (e.g., line printer) to be
free.
MTQ The job is waiting for the magnetic tape controller.
DTQ The job is waiting for the DECtape controller.
DCQ The job is waiting for the data controller (used for mag and
DEC tapes).
CMQ The job is not in core and needs to be brought in quickly; if a
job stays in this queue for long, something is wrong.
Some special characters may be displayed after the queue name:
- The job is currently running.
* The job is swapped out. A second * means the upper segment is
swapped out.
⊗ The job has been locked in core by the LOCK UUO.
\ The job is running a spacewar module on the PDP-10.
/ The job is running a spacewar module on the PDP-6.
X The job is running spacewar modules on both processors.
Some of the above may not be clear until you read the UUO Manual. The alias
is a PPN used as the default directory for disk files instead of your
logged-in PPN. There is an ALIAS monitor command to set the alias for your
job.
XTIME is an incremental run time, measured in minutes, seconds, and 60ths of
a second (a 60th of a second is called a tick). It is normally reset
whenever the program is started by a monitor command other than CONTINUE,
and also whenever the job is awakened by input from the terminal after
having been in IOWQ waiting for such input. Note that if you type ahead, so
that the job never enters IOWQ, terminal input will not reset XTIME. It is
possible to inhibit resetting of XTIME with the BREAK X command (see below).
If resetting is inhibited, the character separating spaces from ticks in the
display will be " instead of ' as it usually is.
BREAK X inhibits resetting your job's XTIME. ESC X resumes the automatic
resetting as described above. Neither of these changes the current value of
your XTIME. Typing ESC 1 X will set your XTIME to zero; BREAK 1 X will set
it equal to your RTIME (total run time). Both ESC 1 X and BREAK 1 X inhibit
automatic resetting, so you have to type ESC X if you want to restore this.
2.6 Page Printer Control
There are two ways of printing on display terminals. To exploit the full
capabilities of the display for graphics, display programs can explicitly
control the positioning of points, vectors, or characters. On III
terminals, 16 such display programs can be written independently, and any
combination of them activated or displayed at any time under program
control. These display programs are called pieces of glass. On Data Disc
terminals, only one display program can be run on each Data Disc channel,
although the effect of multiple pieces of glass can be gotten in a different
way by displaying more than one channel on the screen (see Section 2.7,
which describes the video switch).
The other way of printing on a display terminal is simply to output text to
be printed in order as if on a piece of paper. The monitor automatically
"scrolls" such output; when the area of the screen being used fills up, the
text is moved up a few lines, with the top part disappearing. Sixteen of
these pieces of paper can be displayed at once, on different parts of the
screen. At any time, one of these pieces of paper must be selected by the
program as the one to receive page printer output. The dimensions of each
piece of paper are controlled by the program, but the currently selected one
can also be controlled from the terminal with ESC commands.
The dimensions of the page printer include several factors. First, the
vertical position of the top line of the page. This can be set by the
command ESC n Y for line n. (Lines 1 and 2 are where the WHO line goes; the
normal position is line 4.) ESC Y resets the vertical position to normal.
The scrolling function is controlled by two parameters: the number of lines
typed before a glitch (the upward repositioning of the text), and the number
of glitches on the page. These are set by ESC n L for lines/glitch and ESC
n G for glitches/screen. The defaults are 4 glitches of 9 lines for Data
Disc terminals, and 12 glitches of 2 lines for III terminals. ESC L and ESC
G restore the respective counts to normal.
It is possible to cause automatic holding, as with CONTROL-BREAK, every n
lines or every n glitches. The commands for this are ESC n E for every n
lines, and ESC n J for every n glitches. At each pause, the word HOLDING
will appear on the third line of the display. CONTROL-CLEAR will resume
output as usual. ESC E and ESC J disable the respective automatic pauses.
Typing ESC N will normalize your page printer. BREAK N will clear your
screen, normalize the page printer, and display the text in the page at the
normal position. To refresh the page printer display without changing the
page printer geometry, type ESC P. BREAK P will clear the screen and then
do ESC P. These are useful for getting rid of any noise which may appear on
your screen. There is a rarely-used ESC R to refresh just the display of
your line editor buffer.
Note: Any RESET of your job, either by the RESET UUO or automatically by the
system, eliminates all but piece of paper 0, selects that piece of paper for
further output, and normalizes the page printer display. The UUO Manual
explains the RESET function.
2.7 Data Disc Control
Certain ESC and BREAK commands have special functions for Data Disc
terminals only, and some for III terminals only. This section is about the
Data Disc ones.
The usual display on a Data Disc screen is green letters (hereafter called
"white") on a black background. It is also possible to display black on
white, by typing BREAK C. To restore the normal white on black, type ESC C.
Both of these clear the screen, so you have to type ESC P to refresh your
page printer display. Black on white display requires increasing the
contrast and brightness controls to be visible. This is not the world's
most useful feature; it is also possible, under program control, to display
only part of the screen in black on white.
The remaining Data Disc commands are used to control keyboard mapping and
the video switch. This device allows you to select from the 32 Data Disc
channels, plus various TV cameras and video synthesizers, what you want to
see on your screen. You can see more than one Data Disc channel at a time,
but only one of the analog channels (the cameras). You can select an analog
channel along with a Data Disc channel only if the two are synchronized;
e.g., the lounge TV signal can't be combined with a Data Disc channel
because the synchronization of the former is not under our control.
Data Disc channels in use by a job may be public or private. Only public
channels may be selected by other users. The channel used by a terminal is
normally public. The command ESC H hides (makes private) your terminal's
channel; BREAK H makes it public.
A given physical Data Disc terminal is normally associated with a particular
terminal line number. However, it is possible to associate a physical
terminal with a different Data Disc line number; in effect, a user at one
terminal can control more than one job by pretending to be at more than one
terminal. The terminal's TV screen and its keyboard need not be associated
with the same line--you can type at one line while watching another. To
avoid confusion in what follows, remember that the word "line" will be used
to mean the software terminal line associated with TTY buffers and so on;
"keyboard" and "screen" will be used for the components of a physical
terminal. (Also, "terminal" is restricted to Data Disc terminals for this
section.)
Each keyboard is mapped to some line; characters typed on the keyboard will
be interpreted as input to that line (except for certain escape commands, as
explained below, which always refer to your own physical terminal).
Normally each keyboard is mapped to its own line (that is, the line with the
same number), but this mapping can be changed with escape commands. Each
screen may or may not be tied to some line, seeing the Data Disc channel(s)
associated with the line. (Programs can change the list of channels being
seen by their associated terminal line.) Normally the screen will be tied
to the same line to which the associated keyboard is mapped. However, by
issuing escape commands, the user can tie his screen to some other line, or
can untie it and explicitly select what channels to watch.
Each terminal line has associated with it a temporary and a permanent video
switch map. Normally both maps select the line's main channel, the one
which was assigned to it when the first character was typed on it when it
was available. Programs can modify both maps of their line, or the
temporary map alone. (The temporary map is the one actually seen by screens
tied to the line.) A reset of the job (or a video reset under program
control) sets the temporary map equal to the permanent map. Separate from
these maps, each physical terminal screen can have an untied map which is
used if the screen is not tied to any line.
The command to map your keyboard to another line is ESC n M, where n is a
Data Disc line number. The line must be vacant, your own, or public (see
BREAK H above) for this command to have any effect. Typing ESC M will map
you back to your own line.
The command BREAK M maps your keyboard to the line of another job with the
same programmer name as the one to which you are currently mapped, if there
is another such job on a Data Disc line. The line must be set public as for
ESC n M.
The keyboard mapping commands automatically also tie your screen to the line
to which your keyboard is being mapped. To tie your screen to a different
line, type BREAK n L (note that this is completely unrelated to the ESC n L
command described earlier!), and to tie it back to the line to which your
keyboard is mapped type BREAK L.
Video switch commands are generally of the form ESC n x, where n is a
channel number (Data Disc or analog channel) and x is the command letter.
The form BREAK n x interprets n as a terminal line number if n is in the
range of Data Disc lines (26 to 117). Thus, ESC 30 S selects Data Disc
channel 30, but BREAK 30 S selects whatever channel is assigned to TTY30.
ESC x with no number selects the main channel associated with the line to
which your keyboard is mapped. BREAK n x where n is between 3 and 6 selects
analog channel 40+n. The reason for this alternate notation is that these
analog channels are TV receivers, and the BREAK n x command selects the
sound from the corresponding TV set (see the audio switch section below) as
well as the picture. BREAK x with no number selects the lounge TV set.
The commands ESC n S and BREAK {n} S (braces are used here to indicate an
optional argument) untie your screen and set its untied map. (Note that
ESC S with no argument is interpreted specially, as explained below.) These
commands thus free your screen from program control, so that you will not be
affected by program video switching until you are again tied to a terminal.
(For example, by typing a keyboard mapping command or BREAK {n} L.)
The [ESC|BREAK] {n} T commands (the notation [x|y] means "x or y"), in
addition to the effect described above, set a flag bit associated with your
terminal which indicates that when the program on the line to which your
keyboard is mapped does a video switch RESET operation (either explicitly or
because of a RESET of the job as a whole) you are automatically re-tied to
that terminal as if you had typed BREAK L. The flag is cleared by
[ESC|BREAK] {n} S and by the tying commands (the keyboard mapping commands
and BREAK {n} L).
The commands [ESC|BREAK] {n} [A|D] add and delete channels to and from the
map which you are currently watching, without modifying your tied/untied
status. More explicitly, if you are untied, your untied map is modified.
If you are tied, the effect depends on whether or not the program running on
the line to which you are tied has set up a temporary video map which has
not yet been cleared by a video reset. If so, only the temporary map is
modified; otherwise, the temporary and permanent maps are affected. In
other words, if there is a temporary map in effect, the escape command will
be temporary also. (Note: the distinction between the temporary and
permanent maps is different from the distinction between ESC n S and
ESC n T! The temporary map is associated with a terminal line and is set to
the permanent map, also associated with the line, by a video reset of the
job. If you are untied because of either ESC n S or ESC n T, the A or D
command affects the untied map associated with your hardware screen.) Note
that if you are untied, these commands affect only what you see, but if you
are tied, they affect other users who are tied to the same line you are.
The ESC S command with no argument is interpreted differently from the other
video switch commands. It ties you to the line to which your keyboard is
mapped, like BREAK L, and also sets that line's temporary and permanent maps
to its main channel (the one assigned to it when it was first typed on).
Thus, ESC S undoes whatever video switch manipulation your program has done
as well as tying you to it. It affects other users tied to the line you are
mapped to. The ESC N command also does ESC S as well as normalizing your
page printer. Note that only ESC S and ESC N have the effect described in
this paragraph, not, e.g., ESC T. ESC S, like other forms of video switch
reset, re-ties anyone who is keyboard-mapped to your line but untied by
[ESC|BREAK] {n} T.
While you are keyboard-mapped to another line, certain escape comands still
refer to your own terminal: the video switch commands (S, A, D, and T), the
audio switch commands (U and B, see below), and the map command (M). Other
escape commands, like ordinary characters, are applied to the line to which
you are mapped. BREAK L refers to your own terminal, but ESC L to the line
to which you are mapped.
When an available terminal line is first typed on, either by a user
physically at that terminal or by a user keyboard-mapped there from
elsewhere, all terminals which are keyboard-mapped there become tied there
(they usually will have been tied there already, but might not have been).
Thus anyone mapped there will see the newly allocated channel.
When a terminal logs out and becomes available, ESC M is simulated for all
terminals keyboard-mapped to it. Also, any terminals which are tied to it
are re-tied as by BREAK L. However, screens which are untied but watching
that terminal's channel (e.g., which have typed BREAK n S) will still see
the channel.
2.8 III Control
At a III terminal, several different display programs, called pieces of
glass ("pog"), may be running at once. You can choose which of these (zero
or more at once) are actually displayed.
ESC n S selects piece of glass number n only. ESC n A adds piece of glass
n, and ESC n D deletes pog n. If no numeric argument is used, these
commands apply to all pogs, e.g., ESC D clears all pogs from the screen.
ESC C eliminates all pogs (your page printer is still displayed). It is
different from ESC D in that the display programs are completely forgotten,
so they cannot be reselected.
Note that the selection of display programs can also be controlled by a UUO
in your program.
2.9 Audio Switch Control
Associated with each display terminal is a loudspeaker which can be
connected to various sound sources under computer control, by an audio
switch analogous to the video switch for Data Disc channels. There are 20
(octal) audio switch input channels, numbered 0 to 17. Only one channel can
be connected to your speaker at a time.
One of the input channels is normally silent, but is connected to the
telephone paging system when a page is in progress (i.e., someone has dialed
9 on the intercom line). When you are listening to another channel, you may
choose to be switched to the paging channel automatically when a page is in
progress and then returned to your original channel.
The command ESC n U will select audio channel n and allow paging
interruption. BREAK n U selects channel n and does not allow paging. ESC U
or BREAK U selects the silence/paging channel.
At a Data Disc, the BREAK n [S|A|T] commands, with n between 3 and 6
inclusive, select both picture and sound from a TV receiver. Specifically,
video channel 40+n and audio channel 10+n are selected. BREAK [S|A|T] with
no argument selects the lounge TV, like BREAK 5 [S|A|T].
Your program can control the audio switch selection for your terminal by
UUO. Although programs cannot in general change the audio switch setting
for another terminal, there is a BEEP UUO which can be used to cause any
terminal's loudspeaker to be connected to the beep generator for a short
time (less than one second). This is used by, e.g., the SEND command to
call the recipient's attention to a message on his screen. You can permit
or refuse such beep connections by UUO or by escape commands; BREAK B
refuses beeps, and ESC B permits them. Any change to your audio switch
setting by other means (e.g., ESC U) also cancels the effect of BREAK B, so
you must repeat the BREAK B command after changing your selection.
As we go to press, the following audio switch inputs are connected:
0 silence/paging
2 Helliwell tuner
3 digital-to-analog converter channel A
4 digital-to-analog converter channel B
5 beep generator
6 AM tuner
7 Harvey tuner
11 Farmwald tape deck
12 Kugell tuner
13 old cart TV receiver
14 new cart TV receiver
15 lounge TV receiver
16 conference room TV receiver
17 KSAN
Audio inputs 13-16 correspond to video inputs 43-46.
SECTION 3--TELETYPES AND OTHER NON-DISPLAY TERMINALS
Teletypes do not have display screens, nor do they have the full Stanford
ASCII character set. This means that certain things must be typed
differently.
It is possible to use our computer from another computer, over the ARPA
network, or by telephone connection. The Teletype conventions also apply to
these connections.
The CONTROL (CTRL) key on a Teletype does not produce the same codes as
CONTROL on a display. Instead, it produces codes which, on display
terminals, represent some of the TOP characters. Most programs which deal
with Teletypes, however, either cleverly use only characters which are the
same on all terminals, or have special notations for use at Teletypes. In
particular, there is an SOS representation (named after a Teletype editor)
for printing characters not found on Teletypes, namely a question mark
followed by some other character. See Appendix 13.
To get the effect of CALL, type CONTROL-C twice. (Control characters on
Teletypes generally echo as ↑<character>, so now you know why CALL on
displays prints ↑C.) Deferred CALL is a single CONTROL-C.
Although there are several models of Teletypes and similar terminals, most
of ours do not have lower case letters. The SHIFT key on these terminals,
like the TOP key on our displays, produces non-alphanumeric printing
characters. Most of these are labelled on the Teletype keys, but you may
not find [ (SHIFT-K), \ (SHIFT-L), or ] (SHIFT-M) labelled on some models.
There is no line editor on Teletypes. You can delete the last character on
a line by typing RUBOUT, which prints a backslash and then the deleted
character. Successive RUBOUTs will print the characters deleted, until a
non-RUBOUT, which prints another backslash and then whatever you typed.
CONTROL-U will delete the entire line, like CLEAR on a display.
The end-of-file character for Teletypes is CONTROL-Z. If your program does
input by TTYUUO, CONTROL-Z is converted to 612 (the code for
CONTROL-META-LINE). TAB is typed as CONTROL-I. FORM is CONTROL-L, and VT
is CONTROL-K. RETURN, LINE, and ALT have corresponding Teletype keys. (The
key for ALT may be labelled ALT MODE, ESCAPE, or PREFIX depending on when
the Teletype was built; if none of these appears, type CONTROL-[ to get
ALT.)
Most of the ESC and BREAK commands have no Teletype equivalent. CONTROL-O
flushes typeout like ESC O. A second CONTROL-O resumes typeout like BREAK
O. CONTROL-B starts and stops typeout holding, like CONTROL-BREAK and
CONTROL-CLEAR on display terminals.
Because several Teletype CONTROL-letter characters are used as special
commands to the system, the Stanford Ascii characters which these
combinations would otherwise represent are available for program input only
from Stanford display terminals. These characters are: α (002, CONTROL-B),
β (003, CONTROL-C), ∂ (017, CONTROL-O), ∃ (025, CONTROL-U), ~ (032,
CONTROL-Z, converted to 612, which is CONTROL-META-LINE on displays--the
end-of-file character), and ≠ (033, converted to ALT, 175).
The TTY command provides some of the ESC facilities for Teletypes along with
some other Teletype-specific control features. It takes as argument a
keyword specifying the thing to change. As in typing monitor commands, only
enough letters of the keyword as necessary to make it unique need be typed.
The keyword may be preceded by NO or - to reset the corresponding switch,
e.g., TTY NO TABS or TTY -TABS. The TTY command is legal from displays as
well as Teletypes, but the keywords TABS, ECHO, WIDTH, FILL, and ARROW have
no effect on display terminals. The keyword WIDTH also has no effect on
PTYs which are not ARPA PTYs. You need not be logged in to give the TTY
command, except for the keywords UPDATE and TIME. Here are the keywords and
their meanings:
TABS Declares that the terminal has hardware tabs, so the monitor
will not convert tabs to spaces on output.
ECHO Tells the monitor to send back to the terminal the characters
you type in.
WIDTH n Sets the maximum number of columns for TTY output to the
decimal value n, which should be between 16 and 256.
FILL Tells the monitor to insert extra carriage returns when a
return is typed out at the terminal, to give the carriage time
to return to the left margin. This is used principally for 30
character per second terminals.
ARROW Causes character codes less than 40 octal to be echoed as
uparrow-letter (e.g., ↑A for octal 001) rather than as the code
itself, except for BEL (7), TAB (11), LF (12), VT (13),
FF (14), and CR (15).
FULL Declares that the terminal has lower case letters, and lower
case should not be converted to upper case by the monitor.
Equivalent to ESC F on a display; NO FULL is like BREAK F.
WHO Types out your job's WHO line. "TTY WHO n" will type out the
WHO line for job n; "TTY WHO 0" or "TTY -WHO" will type out the
system WHO line.
UPDATE Enables automatic resetting of XTIME, like ESC X from a
display. NO UPDATE is like BREAK X. See XTIME on page 19.
TIME Resets XTIME and inhibits automatic resetting, like ESC 1 X.
NO TIME, like BREAK 1 X, sets XTIME to the total run time.
SECTION 4--BASIC MONITOR COMMANDS
Commands like LOGIN tell the monitor to run particular system programs in
your core image. In this section, monitor commands which do not refer to a
specific program are described. Some of them do not refer to programs in
your core image at all, but are handled entirely within the monitor itself;
others run programs, but allow you to specify the program as a command
argument rather than implying a particular one like LOGIN.
4.1 Running Programs
The RUN command takes as arguments an optional device name, a file name, and
an optional core size argument. If the first argument is not a device name,
DSK is used. The only allowable devices are DSK, SYS, UDPn, MTAn, and DTAn.
Running programs from magnetic tape or DECtape is not recommended. If the
file name does not include an extension, DMP is assumed.
The core size argument, if any, should be a decimal number indicating the
number of 512-word pages desired for your core image. This must be at least
as much as the saved core image, but you can ask for more. Certain programs
with variable buffer space will use as much as you initially allocate.
(Programs can increase their core size dynamically by UUO.)
If you are running from magnetic tape, the core size must be specified
because the monitor cannot determine the size of a file on magnetic tape
before reading it.
The program is loaded into your core image, your job name is set to the name
of the dump file, and the program is started at the starting address
specified in the dump file.
The R command is used for running system programs. Note that R is a
separate command from, and not an abbreviation for, RUN. The command
R FOO 10
is identical to
RUN SYS:FOO 10
The SYS device is actually the disk, but with the special system directory
[1,3] implied. This directory is used to store system dump files. Any PPN
given explicitly with the R command is ignored; the PPN used is [1,3] no
matter what.
By using the GET command (abbreviated G), it is possible to load a dump file
into your core image without starting it. This command takes the same
arguments as RUN, but instead of starting the program, it types out a
message indicating the size of your core image and leaves your terminal in
monitor mode.
All of the commands in this section cause a RESET of your job.
4.2 Manipulating Core Images
The following commands refer to words in the Job Data Area (see page 13) of
your core image. These words are generally set up by the monitor or the
LOADER. The UUO Manual has a complete explanation of the Job Data Area.
The CORE command is used to find out or change the size of your core image
in 512-word pages. CORE may be abbreviated C. If you include an argument,
the size of your core image will be set to that many pages. If you do not
give an argument, three lines of information are typed out in one of these
two forms:
NNN pages JJJ+KKK pages
MMM pages maximum MMM pages maximum
UUU pages user core UUU pages user core
The first form is used if you have no upper segment, the second if you do
have an upper segment. NNN is the current size of your job in pages (no
upper); JJJ is the size of your lower segment and KKK is the size of your
upper segment; MMM is the maximum size allowed for your job (lower segment
plus upper segment, if any); and UUU is the amount of core currently
available for use by user jobs (i.e., core that is not being used by the
system). If you give the CORE command when you are not logged in, you do
not get the first line.
The command CORE 0 destroys your core image. It also causes a system RESET
of your job, releasing any I/O devices your program was using, etc.
The way to create core image dump files which can be loaded later is with
the SAVE command. This takes device, file, and size arguments just like
GET. This command also does a RESET, and it does not save your
accumulators. Therefore, the program cannot be continued after a SAVE
command, although it can be restarted.
Dump files on the disk can be copied (in binary mode), renamed, etc., like
any other files and will still be runnable as programs. However, dump files
on DECtape are written differently from other files, and cannot just be
copied by normal file operations. Instead, to store a dump file on DECtape,
you must load it into your core image and give a SAVE command to the
monitor.
Unless your core image includes DDT or RAID (JOBDDT nonzero), only the
locations up to the address in JOBFF are saved. (This does not apply if you
use a core size argument.) JOBFF is set by the LOADER to one more than the
highest address it loads into, so any core which was allocated dynamically
by your program will not be saved unless the program updates JOBFF. I/O
buffers allocated for you by the system are allocated above JOBFF, which the
monitor then sets to the new first free address.
If your program includes an upper segment which you wish to save, you should
use the command SSAVE. This is just like SAVE in other respects. SAVE
never saves upper segments.
It is possible to examine and alter words in your core image individually by
monitor commands. The command E (examine) with an octal argument will type
the contents of the specified address in octal. The DE (deposit) command
takes three arguments in octal: the left and right halves of the word you
want to deposit, and the address. DE without the address argument uses the
address of the last E or DE command. E with no argument examines the
location following the last one used by E or DE. (Note that the DDT and
RAID debugging programs provide a much more versatile way to examine and
modify your core image.)
If your core image includes an upper segment (see page 13), you can set or
clear the write protection bit with the SETUWP or CLRUWP commands. You
cannot clear write protection for a sharable upper segment if it is
protected against you. (See the UUO Manual for a complete discussion of
upper segment protection.) These commands also take an optional octal
argument, which is used to set the protection code for the segment if you
are permitted to change the code.
4.3 Starting Programs
The following commands refer to words in the Job Data Area (see page 13) of
your core image. These words are generally set up by the monitor or the
LOADER (except for JOBREN). The UUO Manual has a complete explanation of
the Job Data Area.
The START command (abbreviated S) is generally used to start a program at
its normal starting address in JOBSA. This command can also be used with an
octal argument specifying some other address. If the octal argument is
preceded by + or -, the number is added to or subtracted from the program's
normal starting address to determine the desired starting address.
The REENTER command starts the program at the reenter address specified in
JOBREN, if there is one. JOBREN must be set by the program if it wants to
use this capability. Program documentation will explain the use of the
REENTER command for a particular program. An octal argument preceded by +
(optional in this case) or - will be added to or subtracted from the reenter
address.
The DDT command starts the program at the address in JOBDDT, if any. This
address is set by the LOADER if either DDT or RAID (the debugging programs
for Teletypes or displays) is loaded with your program.
When a program is stopped by typing CALL, by a UUO in the program, or by
various other conditions, the address of the next instruction to be executed
is stored in JOBPC. If the job is continuable (not stopped because of an
irrecoverable error), the CONTINUE command will start it at that address.
(The START, REENTER, and DDT commands will work even if the job is not
continuable, except for certain errors which destroy the core image
irretrievably.)
All of the above commands place your terminal in user mode, that is,
anything you type will be processed under control of your program. It is
also possible to start a program, but leave the terminal in monitor mode.
In this case you can still enter monitor commands which do not affect your
core image. Monitor commands which are illegal while your program is
running will give the message PLEASE TYPE ↑C FIRST.
The CSTART command is like START but leaves your terminal in monitor mode.
Like START, it will take the desired start address as an argument or use the
contents of JOBSA. The CCONTINUE command is the monitor mode equivalent of
CONTINUE. There is no such equivalent for REENTER or DDT. With the
terminal in monitor mode, the program can still type output on it, but an
attempt at reading from the terminal will make the job wait (in IOWQ) until
the terminal is placed in user mode.
The HALT command stops your program. The monitor converts the CALL key into
this command, so you should never need to type it explicitly. (The only
time you can type it explicitly, of course, is if you started the program
with CSTART or CCONTINUE.)
4.4 Detached Jobs
Normally, any user job is associated with a particular terminal. However,
it is possible to detach the job so it can continue running while you do
something else (another job) at your terminal. Also, the monitor sometimes
starts up detached jobs itself to perform various system functions; such
jobs are called phantoms.
Detached jobs can run, and do all the things attached jobs can do, except
that if they try to output to device TTY, the output is lost; attempted
input from TTY makes the job wait indefinitely (until it is attached). If a
detached program executes an EXIT UUO, the job is killed.
The DETACH command detaches your job, leaving your terminal in monitor mode
and not logged in. You can then log in again without affecting the old job.
DETACH takes no arguments. Several commands described below combine the
DETACH function with other useful things. Please remember not to leave jobs
detached forever, but to log them out eventually!
The ATTACH command is used to attach your terminal to a detached job. If
you are already logged in, your old job is detached. The ATTACH command
takes two arguments, a job number and the PPN under which that job is logged
in. (If you are already logged in with the same PPN, you need not give the
second argument.) The job you are attaching must be detached when the
command is given. Note that if you were displaying a WHO line for your old
job, it will still be displayed, indicating the job as detached. This is
handy for re-attaching it when you want to, in that it shows the job number.
(Typing ESC W again will, of course, display the WHO line for your new job.)
You can attach a phantom job only if you have the ATT privilege, in which
case this command will also log in the phantom by turning on the JLOG bit in
its job status word.
Non-local guest users (including non-local users who are not logged in) may
not attach jobs with a different PPN. This implies, in particular, that the
KATTACH command (page 35), which runs LOGOUT and then simulates an ATTACH
command, cannot be used by non-local users even to attach to a job with the
same PPN, since the ATTACH command is done after the logout. Non-local
users should instead ATTACH the other job and use the KILL command (page
32) to log out the original job.
The FORK command will detach your old job and log in a new one. It is
faster than DETACH followed by LOGIN, because it does not run the LOGIN
program. Instead, it merely copies the system information from your old job
into the new job. In particular, if you have an alias in your old job, it
is copied to the new job as well. If the system's job capacity is used up,
so that it is impossible to start a new job, your terminal remains attached
to the existing job.
Often you want your program to continue running in the old job while it is
detached. You could say CCONTINUE and then DETACH, but the command CDETACH
combines these functions. There is also a CFORK command which combines
CCONTINUE and FORK.
4.5 Device Control
Certain I/O devices can only be used by one user at a time, such as a
magnetic tape unit. In some cases, like the line printer, the system
provides a facility for queueing print requests so that individual users
need not actually control the device themselves. However, when a user does
need to use such a device, the ASSIGN command is used to ensure that only
one user at a time tries to use the device. The ASSIGN command (abbreviated
A) can also be used to cause a logical device name to be associated with a
particular device. Thereafter, any reference by your program to the logical
name will be translated into the corresponding physical device.
The command takes two arguments, a physical device name, and an optional
logical name. The physical name can be generic: the command
ASSIGN MTA
will select an available mag tape unit (MTA0 or MTA1) if there is one
available. You can also select a particular unit explicitly.
The logical name feature is sometimes used by programs to allow you to
control their I/O without having to type instructions to the program itself.
For example, a program which produces a listing output might direct it to a
particular filename on device name LST. Before running the program, you
could type
ASSIGN DSK LST
to write the listing file on the disk, or
ASSIGN TTY LST
to type it out at your terminal. You can also change the meaning of what is
normally a physical device name this way--the command
ASSIGN DSK LPT
will make a program which was written to write its output on the line
printer use a disk file instead. You might do this if the line printer is
not available when you want to run the program.
Non-local guest account users (see LOGIN, Section 5.1) cannot use most
non-sharable devices, either by program request or by the ASSIGN command.
Since there is no operator on this system, remote users have no way to mount
tapes, collect listings, etc.; hence, the monitor does not allow such users
to attempt I/O on those devices.
The ASSIGN command is used in a special way for User Disk Packs. A UDP may
be used as a public or a private device. In the former case, other jobs may
use the same UDP at the same time, as with the system file disks. A
privately assigned UDP, however, is restricted to the one job which assigned
it. (Note: a privately assigned UDP is still a sharable device, in the
sense that the job which owns it can operate on several files
simultaneously, unlike non-sharable devices like DECtape drives, on which
only one operation can be in progress at any time.) A UDP is normally a
file-structured device, with a directory structure just like the one
described for the main file disk in Section 1.5. However, it is also
possible to use a UDP as an unstructured device, in which allocation of
storage on the disk pack is done explicitly by the user program. This mode
of using the UDP is called old mode (because it used to be the only mode
available). The format of the ASSIGN command for a UDP is
ASSIGN mode UDPn logical-name
The optional mode argument can be
PUBLIC public access, file structured UDP
PRIVATE private access, file structured UDP
OLD private access, non-structured UDP
The default mode is PUBLIC. A later ASSIGN command for the same device can
be used to change the mode from PRIVATE to PUBLIC, or from PUBLIC to PRIVATE
if no other jobs are using the device. However, to change into or out of
OLD mode, the device must first be deassigned by all jobs using it. This is
because a particular pack either is or isn't formatted for file structured
use, and the mode given in the ASSIGN command must agree with that of the
pack itself. (A mismatch is not detected when you give the ASSIGN command,
but will be caught when your program actually tries to use the device.) The
only exception is that a file-structured pack may be read, but not written,
in OLD mode.
Because of the need to distinguish between the two different UDP formats,
your program will not be allowed to open the UDP unless it is already open
or assigned. Thus, when you first mount a UDP you must ASSIGN it to specify
the mode. When a UDP has been assigned in PUBLIC mode by one job, any job
may use it without assigning it.
We currently have two drives for user disk packs: UDP1 and UDP2. The
monitor treats UDP as a generic device name; the command ASSIGN UDP will
select a free drive if there is one. An ASSIGN command which specifies a
particular drive in PUBLIC mode, e.g., ASSIGN UDP2, will succeed if the
particular drive is not in use or if it is in PUBLIC use. For more details
on the use of user packs, see the UUO Manual.
Once you have assigned a device (other than a UDP) with the ASSIGN command,
no other job can use it until you release it with the DEASSIGN command.
This command, abbreviated D, takes either a logical or a physical device
name as argument. (Note--Assigning DSK or SYS does not prevent other users
from using the disk.) It is possible for a program to use a device which is
not assigned, but the device is released in that case as soon as the program
stops using it. The DEASSIGN command with no argument will deassign all
devices assigned by your job.
Because UDPs can be assigned in a way which permits public access, the
DEASSIGN command for a UDP types a message at your terminal indicating
whether or not the pack should be dismounted. If you interrupt a program
which is using a UDP and deassign the UDP, it will still be considered in
use by your program until you reset it (for example, by the CORE 0 command).
You will then be told that you may dismount the pack. Also, there is a
light mounted near the drives labelled "don't unload UDP2" which is on
whenever UDP2 is assigned or inited by a program. When the Librascope
swapping disk is down (currently the normal case), UDP1 is used by the
system for swapping.
The job which has a device assigned may give it to another job with the
REASSIGN command. This command takes two arguments, the device name and a
job number. This can occasionally be useful if, for example, one job writes
a tape which another should then read. The REASSIGN command prevents the
possibility of another job grabbing the tape unit before the intended
recipient does.
The FINISH command (abbreviated F) is like DEASSIGN except that it releases
the device from your program as well as from the ASSIGN command assignment.
If the device is a directory device which your program had open for output,
the file is closed so that as much data as the program wrote will be saved.
(This applies in the case in which the program was stopped before its normal
exit, either by CALL or by an error.) F with no argument releases all
devices.
The FLUSH command is used to empty the input and output buffers of a
terminal which is not in use. It takes a device name as argument; the
device must be a terminal which is not in use, or your own terminal. This
command may be used without logging in. A user with the DEV privilege can
use this command on any TTY whether it is in use or not.
4.6 System Information
Several commands exist to find out various things about your job or others.
Some of these duplicate information available on the WHO line at display
terminals. None of the commands in this section affect your core image.
The PJOB command types the job number of your job, if you give the command
with no argument. If you use a device name as the argument, it types the
number of the job using the device. (If the device is not in use, it says
so.) The argument can be a name of the form DDn, to find out who is using
Data Disc channel n. You will be told the TTY line number, if any, as well
as the job number. Also, if the argument is a UDP, the command may type out
UDP1 PUBLIC if applicable, and will type a job number only if that job has
assigned the drive as PRIVATE or OLD.
The PPPN command prints out the logged in PPN and the alias, if any, for
your own job (no argument) or the job number you give as argument.
The PTTY command prints out the terminal line number of your own or another
job. If the terminal is a Data Disc, it also prints the channel number.
The TIME command, which also takes an optional job number argument, types
out four quantities for the specified job, the first three of which are
times in hours:minutes:seconds'ticks (a tick is one sixtieth of a second):
Total is the total run time for the job.
Incrementis the run time since the last time a TIME command for this job
was given by the job itself. That is, the Increment time is
reset when you give a TIME command for your own job, but not
when you give one for another job.
Wait is the time the job has had to wait for the system, including
time spent in RUNQ and disk I/O wait, but not tty I/O wait,
STOP, etc. It is somewhat of a measure of the quality of
service the job is getting.
PS (Page-Seconds) is a measure of the demands the job has made on
the system. It is incremented by the job's core size in pages
for every second of runtime.
The command TIME 0 types the amount of time since the last system reload,
the percentage of that time spent in core shuffling, and the percentage
spent running the null job (what the system does when there are no real jobs
it can run). It also types some extra information for the benefit of system
wizards, which varies with their interests at the moment and is generally
not meaningful to users, e.g., the percentage of time spent in the monitor
at interrupt level.
The DAYTIME command with no argument types the current day of the week,
date, and time. With a job number argument, it types the time that job
logged in, the time it was last run, and the current time. DAYTIME 0
specifies your own job. If the job has been logged in since the previous
day, dates (day of the month) are typed along with the three times.
The RESOURCES command lists the available system resources: it types the
number of free blocks on the file disk, and the names of free devices (mag
tape, etc.) other than the disk, IMP, and terminals. A separate line is
typed for each UDP drive unless the drive is detached from the system or
being used for swapping. The line contains just the device name if the
drive is free; otherwise it indicates whether it is PUBLIC or PRIVATE; if
the drive has a file-structured pack mounted, its name (volume ID) and the
number of free blocks, as for the DSK device, will be typed if known to the
monitor. (That is, the name will be typed if any input/output operation has
actually happened on that pack since it was mounted.)
The FILES command lists disk files in use by a job, with some status
information. It can take a job number argument (0 or no argument means your
own job), in which case all files in use by that job are listed, or a
filename argument, in which case the status of the specified file is
displayed (if it is being used by any job). Each line typed by this command
contains the job number of the job using the file; the filename, extension,
and directory ppn of the file; the number of records in the file; the number
of the record currently being read or written; and the way the file is being
used: R for read, W for write, or RA for read-alter, possibly followed by E
for end-of-file seen. The letter U indicates that the file is on a UDP.
The HELLO command types the name of the current version of the monitor.
All of the above commands are legal when you are not logged in. The
following one is not.
The SLEVEL command types out your current service level reservation. The
service level system attempts to guarantee the reserved percentage of the
computer's time to programmers who make such reservations. See the RSL
command, in Appendix 6.
4.7 Miscellaneous Commands
The ALIAS command is used to set your job's disk PPN or alias. If you have
an alias, all disk references by your job which do not include an explicit
PPN will use the alias directory rather than your logged-in PPN directory.
The argument can be PRJ,PRG to set the alias to that PPN, or just PRJ to use
your login programmer name in the alias. An argument of PRJ, (i.e., with a
comma but no prg) uses your old alias programmer name. No argument resets
your alias to zero, so your logged-in PPN will be used for disk files. If
you have an alias, your logged-in PPN is still checked for file protection
purposes.
The TALK command can be used to talk to a user at another terminal. It
takes a device name as argument. The device must be a terminal, which must
be in monitor mode and must not have any characters in its input buffer.
(Device CTY, the PDP-10 console Teletype, is never busy; TALK CTY always
succeeds. Note to remote users: There is no operator on this system;
TALK CTY is not a good way to get assistance!) If the command succeeds, all
characters you type are typed out on the other terminal, and vice versa. If
the terminal you specify was already in a talk ring, you are added to the
ring; all characters typed at any terminal in the ring appear on all the
others. You leave the talk ring by typing CALL. You need not be logged in
to enter a talk ring.
The KILL command can be used to kill another job with your programmer name.
It takes the job number as its argument.
SECTION 5--SYSTEM PROGRAM COMMANDS
The remaining monitor commands all run particular system programs in your
core image. There are a few main groups of these commands and a few
miscellaneous ones. These commands are documented along with the programs
they run. The next two sections are about the LOGIN and LOGOUT programs and
the commands which run them; these were briefly introduced earlier. The
major command groups are then presented, and finally the miscellaneous
system programs. Many system programs are not run by special monitor
commands, but by the R command. Those programs are not documented here, but
in separate manuals.
5.1 LOGIN
The LOGIN command is used to begin a session of using the computer. It runs
the LOGIN program, which provides several optional services as well as
setting up the necessary system tables for your job.
The LOGIN command may be abbreviated L. It takes one argument, a
project-programmer name. Different characters used between the two parts of
the name are used for different options:
PRJ,PRG types all system messages and processes OPTION.TXT (see below)
PRJ/PRG types system messages new since last login, processes
OPTION.TXT
PRJ.PRG types no messages, ignores OPTION.TXT; for fast login
PRJ%PRG sets new password, as explained below, then acts like PRJ,PRG
System messages are notices for all users, sent by the MAIL * command and
stored in the file NOTICE.TXT[2,2]. There may also be messages addressed
specifically to you. The handling of your personal mail is explained below.
It is possible to set a password and file protection codes to restrict
access to a particular PPN. If the PPN you specify to LOGIN has a password,
LOGIN types Password= and you must type the correct password to log in.
Echoing of input characters is turned off so the password does not print.
Passwords may be one to six letters or digits followed by RETURN. To
protect files from unauthorized access, there is a protection code
associated with each file. The code specifies the access allowed to the
file for its owner (i.e., a user logged in under the file's PPN), for other
authorized AI Lab users, and for guest users who are logged in remotely
(from the ARPA network, dial-up telephone lines, or campus terminals). You
can set the protection code for a file using the COPY program (see Appendix
2). However, you must use the LOGIN program to set the protection code of
your file directory itself, and the default protection code which is
assigned to new files created in your directory if the program writing the
file does not specify a value explicitly. If you use % as the delimiter
between the project and programmer names when you log in, LOGIN will give
you the opportunity to change your password, the file directory protection,
and the default protection for new files. The protection codes are entered
as three-digit octal numbers, with the following meanings:
Bit Meaning in directory protection code
400 password is for remote logins only (see below)
200 unused
100 owner may not write files
040 local users may not change protection of files
020 local users may not read directory or any files
010 local users may not write any files
004 guest users may not change protection of files
002 guest users may not read directory or any files
001 guest users may not write any files
Bit Meaning in file protection code
400 don't dump this file (see DART, Appendix 5)
200 delete protect (see COPY, Appendix 2)
100 owner may not overwrite this file
040 local users may not change protection of this file
020 local users may not read this file
010 local users may not overwrite this file
004 guest users may not change protection of this file
002 guest users may not read this file
001 guest users may not overwrite this file
If the 400 bit is on in the protection code for a file directory, the
password associated with that area is used only for logins from a remote
site; no password will be required for local login on that PPN. Except for
the special NET,GUE guest account*, remote login is not allowed on a PPN
which does not have a password; thus, if you want to be able to log in
remotely but do not want to have to type a password for local login, you can
set the 400 bit in your directory's protection code.
Users with access to local terminals who sometimes need to log in remotely
can set a password (with %) for their own PPNs; remote users who want to
establish accounts here should communicate with Lester Earnest. (Type the
command MAIL LES.)
Sometimes you may find the system is in maintenance mode, which means that
the monitor is being debugged and the system is not available for normal
use. If you try to log in at such a time you will be asked for the
maintenance password.
The further details of LOGIN's operation are controlled by a file named
OPTION.TXT which you may have in your directory. If there is one, it is
searched for a line of the form
LOGIN:opt1,opt2,opt3;comments
where opt1...optn are the desired options. Spaces may be used in the
obvious places. Only the first six letters of an option name are read.
Upper or lower case is ok. Several other programs use this OPTION.TXT file,
looking for their own option lines.
The LOGIN options are as follows:
NOMAIL Does not ask any questions about message files. This is for
people who like to type ahead while LOGIN is running. The
exact effect depends on what other options are used; see below.
MESSAG Types your mail without asking; see below.
GRIPE Types out new gripes just like new system messages.
LOGRUN Runs the LOGRUN program, which executes monitor commands from a
LOGRUN entry in OPTION.TXT; see below for details.
INIT Runs the file INIT.DMP in your directory after login. Doesn't
work if you also have LOGRUN.
BEEP If you are at a display, enables the system feature of
automatic beeping whenever your job finishes doing something
that took more than 15 seconds of real time. Like ESC Z.
WHO If you are at a display, starts a WHO line. Like ESC W.
AUDIO=n Selects audio switch input channel n to your speaker if you are
at a display terminal. "n" is an octal number. "AUDIO=-n"
inhibits telephone paging interrupts, like BREAK n U.
DM If you are not on a III or DD display, tells the system that
you are on a Datamedia (DM) display.
DM=n Just like DM option except that this specifies that your DM has
n lines (useful mostly on DM-simulating displays that provide
some number of display lines other than 24).
DM128 Like DM option but also tells the system that your DM can
display the control characters (octal 1 to 37) when they are
output preceded by an ascii escape character (octal 33).
DM128=n Like DM=n and DM128 options combined.
BOLD If you are on a DM display, tells the system to display your
line editor in boldface, assuming your DM has bold and blinking
interchanged like all SU-AI DMs. This is the default for DMs.
NOBOLD If you are on a DM display, tells the system not to display
your line editor in boldface/blinking (especially useful if
your DM does not have bold and blinking interchanged). This
option should occur after the DM or DM128 option, if present.
PORNO Try it and see. Doesn't work if you also have LOGRUN or INIT.
DIGEST Tells you if there is a new Associated Press news digest that
came in after the last time you logged in and asks you if it
should type it out.
QMAINT Only type maintenance forecast if it has changed since last
login. Otherwise the maintenance forecast is always typed
unless . is used as the PPN delimiter.
ME Tells you your fortune.
COOKIE Alternate fortune cookie selection. See which you prefer.
HIDE Makes your Data Disc channel private, like ESC H.
UNHIDE Makes your Data Disc channel public, like BREAK H.
WIDTH=n If you are at a Teletype, sets the maximum number of columns
for TTY output to the decimal value n, which should be between
16 and 256. Like TTY WIDTH n.
FULL If you are at a Teletype, sets the full character set mode
switch. Like TTY FULL.
NOFULL If you are at a Teletype, clears the full character set mode
switch. Like TTY NO FULL.
TABS If you are at a Teletype, clears the tab expand bit; tabs will
not be converted to spaces on output. Like TTY TABS.
NOTABS If you are at a Teletype, sets the tab expand bit; tabs will be
converted to spaces on output. Like TTY NO TABS.
FILL If you are at a Teletype, sets the fill switch to insert extra
carriage returns on output to give the carriage time to get all
the way back. Like TTY FILL.
NOFILL If you are at a Teletype, clears the fill switch thus
suppressing insertion of extra carriage returns on output.
Like TTY NO FILL.
ECHO If you are at a Teletype, tells the monitor to send back to
your terminal the characters you type. Like TTY ECHO.
NOECHO If you are at a Teletype, tells the monitor not to send back to
your terminal the characters you type. Like TTY NO ECHO.
ARROW If you are at a Teletype, tells the monitor to type out
characters below octal 40 as uparrow-letter (e.g., ↑A) rather
than the character itself except for BEL (7), TAB (11), LF
(12), VT (13), FF (14), and CR (15). Like TTY ARROW.
NOARROW If you are at a Teletype, tells the monitor to type out
characters below octal 40 as themselves instead of as uparrow
characters. Like TTY NO ARROW.
If there is a message addressed to you, LOGIN normally types
Message for YOU last written by PRG using PROGRM on dd-mon-yy at hhmm
Read it now?
where YOU is your programmer name, PRG is the programmer name of the last
user to write anything in your message file, PROGRM is the name of the
program used to do it, and dd-mon-yy and hhmm are the date and time it was
done.
If you type Y, the message file is printed, and you are allowed to delete it
(the whole file). If you type N, the message file is not printed. You can
also type R, which will treat your mail file like a system message file;
i.e., header lines will not be typed, and, if you used a slash in the
command, the only messages typed will be those which came since you last
logged in. However, R may not find the recently received messages correctly
if your mail file is in E format. If you type R, LOGIN does not ask if you
want to delete the file.
If you have the MESSAG option but not the NOMAIL option, then personal mail
is always typed out without asking first. If you have both MESSAG and
NOMAIL, the mail is typed but you are not given the chance to delete it. If
you have NOMAIL alone, you get the Message for YOU... line but not the mail
itself; many people use the NOMAIL option for LOGIN and run other programs
to read their mail. See the file E.ALS[UP,DOC] on the use of E as a good
way to process your mail; remote users may prefer to use RCV--see page 105.
If you have DIGEST and NOMAIL, you are notified of a new A.P. digest but it
is not typed out. (RCV will also do this for you.) It is also possible to
get automatic notification of incoming news stories on particular topics
from the NS program; these messages are treated like personal mail with
respect to MESSAG and NOMAIL.
The LOGRUN program looks for a line in your OPTION.TXT file starting with
LOGRUN:. It then takes that line, and all following lines until a semicolon
is seen, and makes them be executed as if you typed them in. (The semicolon
is required.)
------
* At the present time the NET,GUE account has been discontinued, because it
was using too much computer time. People who are not authorized users
cannot log in remotely. A few monitor commands are allowed without login,
as mentioned in the individual command descriptions. The special guest
account capability still exists, however, as does the file protection
mechanism. File transfers over the ARPA network initiated remotely without
providing a password are treated as guest account use for file protection
purposes.
5.2 LOGOUT
The command for terminating a session on the computer is KJOB (kill job),
which runs the LOGOUT program. The command may be abbreviated K. It takes
an optional switch argument to select various optional features. The
OPTION.TXT file is also used to control logout options.
The LOGOUT program normally types out several lines of accounting
information, e.g., computer time used. If you are not logged in elsewhere,
it deletes any files in your directory with extension RPG (these are the
files the SNAIL program uses to remember the commands you gave), and if
there are no files in your directory, it deletes the directory itself.
If you have the RPGSAV option (see below), LOGOUT will look for TMPCOR files
(simulated files in core storage) used by some processors for remembering
SNAIL commands instead of disk files, and copy them to the disk so they will
be remembered the next time you log in. Note that this will not be done if
you use the /F switch (below) for fast logout. LOGOUT will save TMPCOR
files created under an alias with the same programmer name as your logged-in
PPN.
You are told if you have another job logged in with the same PPN, and if you
have assigned any private devices (mag tape, etc.) you are reminded to
unload them.
This normal processing can be affected by switches in the command itself or
by options in the OPTION.TXT file. LOGOUT looks for a line in OPTION.TXT of
the form
LOGOUT:RPGSAV,ME,FAST;
(Of course, you need not use all the options.) These options, if found,
have the following effect:
RPGSAV Don't delete .RPG files.
ME Type a friendly message (try it).
FAST Just log out, don't delete anything, don't save TMPCOR, don't
print statistics.
Switches are single letters preceded by a slash (e.g., KJOB/F). The
switches are:
/K Kill .RPG files (only necessary if you have the RPGSAV option).
/S Save .RPG files.
/M Type a message, like the ME option.
/F Fast logout.
/Z Zero the disk. Deletes all your files, after asking if you
really mean it.
There are two functions of LOGOUT which are performed when you are not
logged in elsewhere, regardless of options or switches used: the "date last
written" entry for your file directory is updated to reflect your most
recent logout (this information is used by FINGER), and if you have a file
named LOGOUT.MSG, it is typed and deleted.
There are two other monitor commands which run the LOGOUT program, for
logging in with another PPN, and for attaching to an existing job (see the
ATTACH command, Section 4.4.) They are
KLOG logout-switches ppn
KATTACH jobnum ppn logout-switches
The logout switches are as described above. The other arguments are in the
required form for the LOGIN and ATTACH commands. Remote users may not use
the KATTACH command; instead, use ATTACH and then KILL the old job.
Finally, there is a LOGOUT command, which is exactly the same as KJOB but no
arguments are allowed.
Any of these commands, when typed at a PTY which is not owned by a TELNET
server (that is, not the virtual terminal of an ARPA network user), simply
kills the job without running the LOGOUT program. This has approximately
the effect of KJOB/F.
5.3 SNAIL
The SNAIL commands run the SNAIL program, which then runs various other
programs. The commands are divided into three basic groups. The first, for
text file editing, take a file specifier as argument:
CREATE create a file with SOS
EDIT edit a file with SOS
MAKE create a file with TECO
TECO edit a file with TECO
The other major editor, E, includes the necessary code to carry out the
SNAIL functions itself, e.g., default extensions and remembering the
commands. The following commands are, therefore, not strictly SNAIL
commands but function equivalently:
CETV create a file with E
ETV edit a file with E
READ edit with E in book mode
The second group, for program compilation, take one or more program names or
a command string, along with various option switches:
COMPILE compile programs
LOAD compile and load programs
EXECUTE compile, load, and run programs
PREPARE compile and load with a debugger
DEBUG compile, load with a debugger, and start the debugger
TRY compile, load with a debugger, and start the program
PUB produce a document with the PUB document compiler
POX produce a document with the POX document compiler
RER run a system program and give it a command string
RERUN run a user program and give it a command string
PROCESS pass a command string to the monitor
Finally, one more command, used in conjunction with the compile-type
commands, which takes no arguments:
CREF produce cross-reference listings from compilations
The complete description of these commands, with the command syntax and the
processing options provided, is included as Appendix 1.
5.4 COPY and SPOOL
The next major group of commands runs the COPY program. Their arguments are
generally in the form "new-file ← old-file":
COPY copy a file
TRANSFER copy and delete the original
RENAME rename a file or change protection
The following COPY commands imply a destination, and take just one or more
input file specifications (separated by commas if more than one):
DELETE delete a file
TYPE copy to the terminal
LIST copy to the line printer (SPOOL, below, is preferred)
PRINT copy to the line printer, different format options
XGPLIST copy to the Xerox Graphics Printer (XSPOOL is preferred)
DIRECTORYtype file directory
The COPY manual explains these commands fully, along with various options
specified in the argument list; see Appendix 2.
Since only one job can use the line printer or XGP at a time, if several
people want to make listings at once there is a scheduling problem. To
solve this, the system allows listing requests to be stored on disk, and
processed one at a time by spoolers which actually control the LPT and XGP.
The system commands for this function are:
SPOOL request line printer listing of specified file(s)
XSPOOL request XGP listing of specified file(s)
UNSPOOL delete a spooler request
QSPOOL type out spooler status and queues
The SPOOL commands also allow editing options to be specified in the
argument list; see Appendix 3 for details.
The commands in this section all require that you be logged in, except for
TYPE, DIRECTORY, and QSPOOL.
5.5 MAIL
Several commands are provided for sending messages to other users. Messages
can be filed on disk, so that the addressee will be notified about them by
LOGIN, or they can be sent directly to the terminal of a logged-in user.
There is also an automatic reminder system which allows messages to be sent
or programs to be run at a later time. The commands used for these purposes
are:
MAIL send a message to one or more message files
SEND send a message to the terminals of one or more users
GRIPE send a message complaining about a system problem
REMIND schedule a message to be sent at some later time
PLAN create a file describing how to find you when not logged in
EVENT send a message to all users about an event on a given date
BATCH schedule the execution of a command string at some later time
LATER schedule the execution of a given program at some later time
RETRY send any messages which were queued by earlier failing operations
ETV ∂ edit E-format message file
RCV edit non-E-format message file
CANCEL delete REMIND, BATCH, or LATER requests or queued mail
The usual format of the MAIL and SEND commands is
MAIL user message
SEND user message
where user is a programmer name and message is the one-line text you want
sent. If you do not include a message in the command, the MAIL program will
ask you to type a message, which may then have more than one line. The
complete description of these commands is in Appendix 4.
The commands in this section require that you be logged in, except for MAIL,
SEND, GRIPE, and RCV.
5.6 DART
DART is a program to save disk files on magnetic tape and restore them as
needed. It also handles mag tape positioning commands. The file dumping
commands take disk file names as arguments:
DUMP dump disk files onto tape
RESTORE restore files from tape to disk
LOCATE find which tape has dumped copy of files
TLIST list all files on a tape
The tape positioning commands are:
REWIND
ADVANCE
BACKSPACE
EOT
The complete documentation of these commands is in Appendix 5 of this
manual.
5.7 DO
The DO program allows automatic execution of an arbitrary sequence of
commands. By writing DO command files, you can make your own sequences of
program execution analogous to the SNAIL compiler-loader-execution sequence.
The DO command takes a file specifier as argument, with the default
extension being .DO. The text in the file is simply transferred into your
terminal's input buffer, as if you had typed it. Then the DO program exits,
and the monitor processes the commands that came from the file. The DO
program cannot be run by detached jobs. The amount of text allowed in the
DO file is limited by the capacity of your input buffer (currently 95
characters, plus one extra line of up to 160 characters on display
terminals). You can sometimes circumvent this limitation by the following
trick: if the command string to be processed by DO ever leaves you at
monitor command level, you can insert at that point in the string a DO
command to process another file (or another function in the same file--see
"|" character below); the DO command must appear as the last thing in the
string--subsequent commands should then appear in the next DO file. This
trick can be repeated any number of times--simply make the last command in
each DO file be a DO command to reference the next file.
DO does some conversion of certain characters in the file, to allow things
like CONTROL and META characters. The characters which are processed
specially are:
RETURN ignored
LINE ignored
↔ translated to RETURN followed by LINE
↓ translated to LINE
≠ translated to ALT
λ translated to deferred CALL (one ↑C)
VT adds CONTROL bit to the following character
α adds CONTROL bit to the following character
FORM adds META bit to the following character
β adds META bit to the following character
⊗ translated to ESC
⊗- translated to BREAK
| separates different DO functions (see below)
≡ quote the next character (do not process it specially)
? takes the next character (other than RETURN or LINE) as a
variable name. Suppose the character is A (i.e., ?A). If this
is the first occurrence of ?A in the file, DO types out
"A= " and waits for you to type in a text string ending
with RETURN. This string is substituted for every occurrence
of ?A in the file.
To allow more than one DO function to be stored in the same file (because
small files are inefficient in using disk space), the vertical bar (|)
character can be used as a separator. The command
DO DOFILE(3)
will DO the commands between the second and third | characters in the file.
The DO command remembers its argument in a .RPG file, so you can type DO
without an argument to repeat the same command file. Also, the DO command
is remembered as if it were a COMPILE-type SNAIL command, so the SNAIL exit
mode commands in the text editors will also repeat the DO command. Thus,
users of languages like LISP which are not recognized by SNAIL can write DO
files to run LISP and read in their program.
The DO program ignores E directory pages and FORM characters found in
E-format files.
5.8 ZERO
The ZERO command is used to initialize file directories on disk or DECtape.
The command takes a device name as argument; the device must be DSK, DTAn,
or UDP (user disk pack).
For DECtape, ZERO simply executes the UTPCLR UUO, which tells the monitor to
initialize the file directory for the DECtape unit you specified. Make sure
you don't get the wrong unit number and zero someone else's DECtape!
If you specify device DSK, you must confirm (by typing Y) that you want to
delete all the files in your disk area. ZERO then attempts to delete each
file in your area. For each file, it types # if successful, otherwise a
message indicating the reason for the failure (write protected, etc.).
The ZERO program is not used for new format (file structured) UDPs. It can
be used to change the password of an old format UDP, and also allows the
initialization on such a UDP of the file structure formerly used by the COPY
program, although this feature is now obsolete. The UDPUFD command (see
page 46) is used to set passwords and create file directories on new format
UDPs.
5.9 WHO
The WHO command (abbreviated W) runs the WHO program, which displays system
status information at your terminal. If you are at a display terminal, the
information is automatically updated as long as the program continues to
run. If you are at a Teletype, the information is only typed once. The WHO
command does not require that you be logged in. WHO accepts various
commands, described later, to control what information is presented.
The first part of the WHO display is a list of the jobs on the system, with
various information about each job. This list is divided into two sections,
for jobs belonging to users and for system phantom jobs. (More precisely,
the second section contains jobs which are detached and have the JLOG bit
off in the job status word, i.e., are not logged in.) Jobs attached to
pseudo-teletypes are listed under the controlling job, with the line for the
controlled job indented. The listing for each job has several parts:
JOB job number
QUEUE queue name, as in the WHO line, with possibly an extra
character indicating one of several states (if more than one
applies, the one which comes first in this list is displayed):
← the job needs to be swapped in, e.g., for a monitor command
- the job is now actually running
⊗ the job is locked in core
→ the job's upper segment is next in line to swap in
↑ the job is next in line to be swapped out
↓ the job is next in line to be swapped in
* the job is swapped out
↔ the job is next in line to be moved in core
PPN the job's logged-in PPN ("100100" for not-logged-in WHOs, etc.)
LINE the job's terminal line number, or DET for detached jobs
JOBNAM the job name
SIZE the job's core image size in 512-word pages
TIME the job's total run time since login
PL percentage of CPU time spent on this job recently
SL service level reservation for this programmer
SEG job number of this job's upper segment
SW10 number of ticks between startups of job's PDP-10 spacewar
module
SW6 number of ticks between startups of job's PDP-6 spacewar module
ALIAS the job's ALIAS PPN
If a job has an alias and is not running a spacewar module on either
processor, a dot (.) will appear in the area used for indicating spacewar
modules, to help the viewer line up the alias with the proper job line.
After the job display comes a display for upper segments, containing the job
number (possibly followed by one of the above single-character markers), the
letter W if the segment is not write protected, the job name, core size, and
number of jobs using the segment.
The next part of the WHO display is a summary of overall system statistics.
This includes the time since the system was last restarted (UPTIME); short
and long term time spent running the null job (NULTIMES); short and long
term time spent running the null job when another job wanted to be run but
wasn't in core (WASTED); total user core image sizes in core and swapped out
(CORE); the largest contiguous free block of core, the total available user
core not used by locked-in jobs, and the total available user core (USABLE);
the number of jobs in RUNQ and TQ and their combined core image size
(RUNNING JOBS); and the total service level reservation for logged-in users
(TOTAL SLEVEL).
The final section of the WHO display is a list of all I/O devices in use by
programs or assigned by jobs. For each such use of a device (most devices
can only have one at a time), a line is displayed containing the logical
name, if any; the physical name; the character "#" if the device was
assigned by the ASSIGN command; the job number using the device; if a
particular file is open, the file name, extension, and directory ppn (for
disk files), the number of records in the file, the record currently being
read or written, and the read/write status. This last will be W if the file
is open for output, R for input, or RA for read/alter mode, followed by E if
the end of file has been read. Note: if the file has been closed, there may
be no mode flag, and a large number like 1101 in the current-record
position. Record numbers are displayed in octal.
WHO commands
WHO accepts commands to determine what information is to be presented.
These are single-character commands, and should not be followed by carriage
return. However, some of the commands must be followed by an argument,
which is ended with carriage return; ending such an argument with alt mode
will abort the command. WHO commands may be included on the monitor command
line which starts the WHO program running, or can be typed separately while
the program is running (the latter on display terminals only). Only one WHO
command which takes an argument can be included on the monitor command line,
and it must be the last thing on the line.
On display terminals, only part of the information can fit on the screen at
a given time. Certain commands provide "scrolling" of the display up or
down; these commands are ignored on non-displays.
The available commands are listed in the table below. Other characters will
be ignored in a monitor command line, but will make WHO clear the screen and
exit if typed while WHO is running on a display. If no command is typed to
a WHO running on a display for two minutes, WHO will exit, unless the ∞
command has been given. After WHO exits, typing CONTINUE to the monitor
will tell WHO to continue presenting the same information it had been
presenting when it exited.
The following commands apply only to Stanford display terminals:
↑ (or ;) scroll up 1/2 screen
↓ (or :) scroll down 1/2 screen
FF (formfeed) scroll up whole screen
VT (vertical tab) scroll down whole screen
0-9 repeat argument for ↑ ; ↓ : FF VT
∞ run forever (otherwise WHO exits after nothing has been typed
in for two minutes)
E Exit, leaving information displayed on the screen and with the
page printer set up to avoid erasing it
The following commands apply both to displays and to hardcopy terminals:
R only display jobs which have recently been Running (not in
NULQ, STOP, IOWQ, or INTW)
N restore Normal display (all jobs)
T Type out the job information only (not system statistics or
file information). On a display, exit after typing the
information once.
F Like T, but type File information also.
M V * " + - @ These seven commands allow you to specify which jobs
should be displayed. These are explained below.
WHO keeps two special tables of job specifications for deciding which jobs
it will display; these tables are called the PLUS table and the MINUS table.
Jobs specified by the MINUS table will not be displayed (regardless of other
conditions). The PLUS table is ignored if empty; but if it is non-empty,
then only jobs specified by the PLUS table are displayed; however, jobs
specified by both tables will NOT be displayed, since the MINUS table has
priority. Both tables are initially empty, and the R and N commands reset
both tables to empty. Jobs can be specified in these tables by project
name, programmer name, project-programmer name, job number, and job name.
Each of the commands * + - " @ takes an argument which should be ended with
a carriage return; if an argument is ended with an altmode, the command will
be aborted. WHO will beep you if an argument is not accepted (illegal
argument or aborted with altmode). The commands M and V take no argument.
The argument to @ is a filename, the argument to " is a job name, and the
argument to each of the commands * + - is a job specification which can be
any of the following forms:
PRG programmer name (letters and digits only)
,PRG programmer name (letters and digits only)
PRJ, project name (letters and digits only)
PRJ,PRG project-programmer name (letters & digits only)
NUMBER a decimal job number less than 64 (digits only)
"NAME a job name (any sixbit characters after ")
A job will match specifications of the first four types if either its
logged-in PPN or its ALIAS PPN matches the specification. Any job running
on a PTY owned by a job being displayed will also be displayed, unless the
job on the PTY matches a specification in the MINUS table. If a job running
on a PTY is displayed and its controlling job is not displayed, then the job
on the PTY will be indented using dots (.) instead of spaces (which would be
used if the controlling job were being displayed).
The seven individual commands are described below.
M only display jobs matching your logged-in programmer name or
your ALIAS programmer name (clears both tables and then puts
your logged-in programmer name and your ALIAS programmer name
into PLUS table)
V only display jobs belonging to volleyball players (simulates an
@VB.DIS[P,DOC]--see @ below)
*<spec> only display jobs matching the specification <spec> (clears
both tables and then puts <spec> into PLUS table)
+<spec> also display jobs matching <spec> except those matching entries
in MINUS table (adds <spec> to PLUS table and removes <spec>
from MINUS table); leave running-jobs-only mode.
-<spec> don't display jobs matching <spec> (adds <spec> to MINUS table
and removes it from PLUS table)
"<name> only display jobs with the job name <name> (clears both tables
and then puts <name> into PLUS table)
@<file> clear PLUS and MINUS tables and then put job specifications
from the file <file> into the tables. E directory pages and
SOS line numbers are permitted and ignored. The default
extension .DIS is used if no extension is typed. If no PPN is
typed, the disk area [P,DOC] is tried first, then your own disk
area, to find the file.
While reading from a file, spaces are ignored (except in a job name). A
semicolon not in a job name causes the rest of the line to be ignored.
Non-SIXBIT characters (except lower-case letters, which are converted to
upper case) are treated like CRLFs.
An entry in the file can be any of the forms listed below, and should be
terminated by a comma or a CRLF. Note however that a comma (or any other
sixbit character including semicolon and space) appearing as one of the
first 6 characters of a job name will be taken as part of the job name.
+<specx> Add the specification <specx> to PLUS table.
<specx> Add the specification <specx> to PLUS tabls.
-<specx> Add the specification <specx> to MINUS table.
Unless all entries in the file are of the form -<specx>, WHO leaves
running-jobs-only (R) mode. A job specification in a file, <specx>, can be
any of the following forms (note that these are slightly different from the
forms for <spec> that you can type in):
PRG programmer name
[PRG] programmer name
[,PRG] programmer name
[PRJ,] project name
[PRJ,PRG]project-programmer name
"NAME job name. After the " the first 6 characters (or less if
terminated by a CRLF) are taken as a job name. Then characters
are skipped until a comma or CRLF is seen.
Note that you cannot specify a job number from a file.
From a non-display terminal only, the command WHO/Q will type only the PPN
and TTY for each job which is not detached. ARPA network users are listed
separately. This is intended for Quick typeout.
If WHO is started with the REENTER command, it makes a listing of its
information display on the line printer. The information printed will be
controlled by the WHO commands in effect when WHO last exited, if any.
5.10 FIND
The FIND command is used to locate information in a file by searching for a
keyword and typing out the "paragraph" in the file containing the key. The
main use of this program is to look people up in the AI Lab telephone
directory. FIND may be run without logging in first.
FIND [EXACTLY] [WITHIN <delim>] [EXACTLY] <key> [[IN] <file>]
where square brackets [] indicate optional elements, <key> is the string of
characters to be found in the file <file>, and <delim> is either a single
character or one of the following words: MSG LINE PAGE PARAGRAPH GRAF.
If <key> contains any spaces or tabs, it must be separated from the filename
<file> (if present) with the word IN, or delimited by double quotes (") or
left and right single quotes (` and '). The left and right quote characters
(` and ') may appear in the key when double quotes surround the key, and
double quote and left single quote characters (" and `) may appear in the
key when left and right single quotes surround the key. If the number of
spaces and tabs in the key is significant (in EXACTLY mode), the quoted form
must be used; note however that quotes do not imply EXACTLY.
The EXACTLY qualification (which, as indicated by the syntax above, may
occur either before or after any WITHIN phrase) causes FIND to search for an
exact match. Otherwise FIND performs a template match. A template match
recognizes two special symbols in the key: space (one or more consecutive
spaces or tabs in the key) and ellipsis (three or more consecutive dots). A
space in the key matches zero or more spaces, tabs, and CRLFs in the unit
being searched. An ellipsis in the key matches zero or more arbitrary
characters in the unit being searched. Furthermore, in a template match,
upper and lower case letters are equated. The EXACTLY search is somewhat
quicker and requires that the unit searched (see the WITHIN phrase below)
contain the key exactly as given.
The WITHIN <delim> phrase allows specification of the delimiter that
determines the amount of text searched as a unit and typed out when a key is
found. The default typeout is a PARAGRAPH except when the partial-sign mail
filename specifier is used, in which case MSG is the default. To specify
some other quantity, use the WITHIN phrase in the command (see the syntax
above). The text typed out will be that delimited by <delim> at the
beginning and at the end. The delimiter <delim> can be specified as a
single character or it can be specified by one of the following exact names:
MSG LINE PAGE PARAGRAPH GRAF
where MSG means that partial sign (∂) is the delimiter (designed for use
with mail files), LINE means that the end of a line is the delimiter (i.e.,
only the line on which the key is found will be typed), PAGE means that
formfeed (a pagemark) is the delimiter, and PARAGRAPH or GRAF means that a
blank line is the delimiter.
The delimiter character will be treated as a delimiter only if it occurs as
the first character on a line; a line starting with the delimiter character
is considered the first line in a new text unit, and the previous line is
the last line in the previous text unit.
Each separate text unit containing the key is a hit and is typed out, with
each line of text preceded by an asterisk (*) except that the line in which
the key occurs is preceded by a greater-than sign (>). Also, the hits are
counted and the count is printed after the whole file has been searched.
Within a single delimited text unit, up to about 25 lines can occur both
before and after the line in which the key is found. If more than about 25
lines occur before and/or after the key but within the delimited text area,
an ellipsis (. . .) will be typed out before the first line typed out and/or
after the last line typed out.
The default file to be searched is the A.I. Lab phone directory. However,
if you have an OPTION.TXT file in your alias directory with a line beginning
FIND:, then the default file searched will be that named after the FIND:.
The default file is used unless you specify a filename in your command, in
which case the specified file is searched. If you have a FIND:<file> entry
in your OPTION.TXT file, you can still have the phone directory searched
without typing its exact name by using the filename PHONE in your command.
The FIND program tries to be as clever as possible about deciding what is or
is not a filename. For example, the command
FIND LARRY TESLER
will look for the string "LARRY" in the file TESLER if you have such a file
in your directory, but will look for "LARRY TESLER" in the default file if
you do not have a file TESLER. However, this rule is applied only if the
key ("LARRY") is only one word; otherwise, the key must be quoted or
delimited with IN if a file is also specified.
The filename given can use the partial sign (∂) to specify a mail file
(prg.MSG[2,2]). The partial sign can optionally be followed by any
combination of a programmer name to specify one other than your own; an
asterisk (*) to specify the system message mail file NOTICE.TXT; an
extension to specify one other than .MSG; and a PPN to specify one other
than [2,2]. When a partial-sign filename specification is used, the default
amount of text to be searched and typed out as a unit (see the WITHIN phrase
above) is one message, that is, all text between line-starting partial signs
in the searched file; this can be overridden using the WITHIN <delim>
phrase.
For instance, the command
FIND garply baz in ∂
will search your own mail file for "garply baz" and type out the entire
message(s) it occurs in. The command
FIND EXACTLY " ME" in ∂*
(that's "<tab>ME") will find all system messages (in NOTICE.TXT[2,2]) from
ME. The command
FIND EXACTLY " ME" in ∂bh
(again that's "<tab>ME") will find all messages sent to BH by ME, and the
command
FIND president in ∂.nap
will search your own News Service notification file on [2,2] for all
notifications containing "president".
More example commands:
FIND EXACTLY JMC
FIND MCCARTHY
FIND TARGET IN COMLIN.FAI
FIND TARGET COMLIN.FAI
FIND "TEMPLATE ... TARGET" COMLIN.FAI
FIND TARGET BYTE IN COMLIN.FAI
FIND `LOMA VERDE'
FIND EVENT IN ∂*
FIND EXACTLY " E " IN ∂*
FIND WITHIN GRAF EXACTLY Help IN ∂
FIND WITHIN ∂ HAND-EYE IN SAVED.MSG
FIND WITHIN MSG PDP-11 IN OUTGO.MSG
FIND WITHIN PAGE UDPUFD IN MONCOM.BH[S,DOC
FIND EXACTLY WITHIN LINE Foo IN FILE1
FIND john...lathrop
Example output for the last example command above:
*McCarthy, John (Prof. John) 207 74430 45 P[FR*/VB,JMC] 2 1600
> 846 Lathrop Dr., Stanford,94305, (9) 321-7580 β Sep 4
1 HIT ON KEY = john...lathrop
5.11 Other System Information Programs
This section describes other commands which run information programs. All
of them are allowed to be run without logging in.
The WHERE command types out information similar to WHO for jobs belonging to
a particular user. It takes a PPN or programmer name as argument, and for
each job whose login or alias PPN matches the argument types out the job
number, PPN, job name, core size, queue, total run time, actual time when
the job was last run, terminal, and alias if any. (The terminal is listed
by type and unit number, e.g., TTY5, III23, DD56, PTY121. Note that these
are not actual physical device names recognized by the system, except for
TTYn.)
If you are logged in and run WHERE, you can give the REENTER command and
type in a job name. WHERE will then list all jobs with that job name.
The FINGER command also lists jobs belonging to a particular programmer, but
provides different information: the job number and job name, the programmer
name, the real name of that programmer if known to the system, the number of
minutes since the job was last run, the terminal number (and type, as in
WHERE), and the actual location of the terminal (room number, if in the lab,
and whose office it is). FINGER with no arguments displays all jobs which
are logged in. If the programmer specified as the argument to FINGER is not
logged in, the program types the date and time of his last logout. Also, if
he has created a plan file (with the PLAN command, Appendix 4) it is typed.
FINGER will accept human being names as argument instead of programmer
names, if desired.
The HELP command provides information about system programs and facilities.
It takes as its argument the name of some program or concept, and provides
some short description of that facility, if such a description exists. The
data for HELP comes from the [3,2] directory; this data consists mostly of
short text files which are typed by HELP, but may also include programs or
monitor commands which HELP will run for you. If no HELP is available, but
there is a longer document available in one of the standard documentation
file directories, HELP will so inform you. If you type HELP with no
argument, the program will list the topics on which HELP is available.
(Some of the HELPers which run programs rather than just typing text at you
require that you be logged in. HELP LOGIN is cleverly not among those.)
The SYSTAT command runs the WHO program (see Section 5.9). The old SYSTAT
program is no longer supported on this system, but the command name was
retained for compatibility with other systems.
5.12 Miscellaneous System Programs
The commands in this section run miscellaneous system programs. Except as
noted below, they require that you be logged in.
RSL runs the RSL program, which is used to reserve service level (i.e.,
better service). The command takes no arguments. The meaning of service
level and the use of RSL are described in Appendix 6.
The LISP command runs the LISP interpreter. It takes no arguments. Note:
when the system wizards need a command table slot to patch in a new command,
LISP is the first to go. Therefore, it may not always exist. R LISP has
the same effect and always works.
The FIXIMLAC command is used to initialize IMLAC terminals. (These are
terminals which are treated as Teletypes by the monitor, but are actually
small computers with display screens.) With any luck, you will never see an
IMLAC. Just in case, the command is explained in Appendix 7. This command
may be given when not logged in.
The XEROX command runs the XEROX program, which does file formatting to
produce pretty documents. It has nothing to do with the Xerox Graphics
Printer. XEROX has been largely replaced by PUB, a more versatile
formatter. The XEROX manual is the file XEROX.LES[UP,DOC].
The TELNET and TN commands (TN is used to abbreviate TELNET) run the TELNET
program, for talking to another computer on the ARPA network. The host name
of the computer you want to use is the argument.
The FTP command takes an ARPA host name like TELNET, but runs the FTP
program to carry out the File Transfer Protocol for copying files between
computers.
Further details on TELNET, FTP, and the ARPA net in general is contained in
Appendix 8 of this manual.
It is possible to establish TELNET-like connections to remote computers by
using dial-up connections via the dataphones normally used for incoming
dial-up lines. Such dataphones are presently associated with TTY10 and
TTY11; the dataphone on TTY11 includes an automatic dialing circuit. The
DIAL command will establish an outgoing dataphone connection and thereafter
behave like a TELNET. The dial command takes as its argument either the
device name of a TTY, in which case you must dial the number you want
manually on the associated dataphone, or a telephone number in the form
{(ddd)}ddd{-}dddd
where d represents a digit and braces enclose optional characters. In the
latter case, the telephone number is dialed automatically on TTY11's
dataphone.
The NS command runs the News Service program, which allows access to news
stories which have been received from the Associated Press and New York
Times news wires. The HOT command runs the HOT program, which types AP or
NYT stories as they come in. These commands are restricted to local users
at the request of the Associated Press. Full documentation on the news
service is contained in the file NS.ME[S,DOC].
The UDPUFD command runs the UDPUFD program, which is used to create or
delete user file directories on file-structured user disk packs. The
command format is UDPUFD PRJ,PRG. If you have exactly one UDP assigned,
that UDP is used. If you have none assigned but there is one public UDP,
that UDP is used. If you have two or more more UDPs assigned, or if you
have none assigned and there are two or more public UDPs, the program asks
which to use. If there are no UDPs available to you, the program tells you
to assign one. To create a new directory, you must know the pack password;
to change or delete a directory you must know its password. You can change
the directory's password or file protection codes with UDPUFD as you can for
the main file disk with LOGIN (see Section 5.1). You can delete a directory
only if it is empty. This is a privileged program, and the command is
restricted to local users (as is the UDP itself). This command can also be
used to format the scratch/swapping UDP for OLD mode use if it has been
formatted for new mode: assign the UDP in OLD mode, mount the scratch pack,
and type UDPUFD with no argument. Only the scratch pack may be reformatted
in this way.
The DRD command (not related to the Department of Redundancy Department)
runs the DIRED program, for displaying and manipulating file directories at
a Stanford display terminal. See the file DIRED.SGK[UP,DOC] for
instructions.
The TEST command runs the system program TEST, if any, which is used for
testing new system features and programs.
SECTION 6--PRIVILEGED COMMANDS
Certain command functions can only be used by privileged users. (There are
several privileges which may be associated with a PPN.) Most privileged
functions are carried out by programs and are documented with those
programs, but a few monitor commands themselves take on special meanings
when used in a privileged way. Most users do not require any privileges; if
you think you need to be assigned any, see a system programmer, who will
disagree.
The DETACH command, if given with a device name argument by a user with the
DEV privilege, makes the specified device unavailable to users. This is
intended to be used for hardware maintenance. The ATTACH command with
device name argument, also privileged, assigns a detached device to the job
giving the command; it becomes generally available when the job deassigns
it. These commands also accept pseudo-device names of the form DDn, to make
Data Disc channel n unavailable. (A detached Data Disc channel can still be
used if a program requests it specifically by number, or if no other
channels are available.)
A user with the ATT privilege can use the ATTACH command to attach any
detached job, including specifically a phantom job (i.e., a detached job
with the JLOG bit off in its job status word). In this case, ATTACH will
log the job in by turning on its JLOG bit.
The FLUSH command can be given to any terminal by a user with the DEV
privilege.
The KILL command can be used to kill any job by a user with the KIL
privilege. Also, the job is killed in a more immediate but more dangerous
way, without waiting for it to finish any input/output operations in
progress.
The TALK command is always successful if given by a user with the TLK
privilege.
Privileges can be enabled or disabled at any time. That is, for each job,
the monitor remembers the privileges to which the job is entitled as well as
the ones which are presently active. All privileges to which you are
entitled are normally activated when you log in, but you may choose to
disable any or all for safety reasons. The ENABLE and DISABLE commands,
with no arguments, turn on or off all privileges to which you are entitled.
These commands may also be used with a privilege name as argument, to enable
or disable specific privileges. If you have the PRI privilege, you can
enable specific privileges to which you are not entitled, except that
privileges which are intended only for specific programs (XGP font compiler,
service level monitor) cannot be enabled by any user.
Also, a few system programs intended for general use require special
privileges. Such programs are run by special commands (not R or RUN), and
any attempt to modify your core image while running such a program will
disable the temporary privileges involved.
The EDDT command can be given only from the PDP-10 console Teletype. It
stops timesharing and starts Executive DDT to allow debugging of the
monitor.
APPENDIX 1--SNAIL
SNAIL is a program which interprets certain monitor commands for editing
files, compiling and loading programs, and loading the line editor buffer.
It simplifies these tasks when necessary by expanding concise user commands
into the different forms used by editors, language processors, and the
loaders. Without user intervention, SNAIL will run the correct language
processors to translate the user's files, and will run a loader to create an
executable core image containing the user's program. SNAIL also provides a
convenient means of communication between editors and other processors.
SNAIL knows about certain standard processors. These are the editors: SOS
and TECO; the compilers: SAIL, FAIL, F40 (FORTRAN), MACRO, and PAL; the
document compilers: PUB and POX; the debuggers: BAIL, RAID, and DDT; and the
loaders: LOADER and LINK.
The E editor includes within it the SNAIL functions, so its "SNAIL" commands
run E directly rather than via the SNAIL program. Nevertheless, the E
commands are included here because they are operationally similar.
The SNAIL commands are divided into three classes: EDIT, COMPILE, and CREF.
SNAIL: EDIT-Class Commands
There are six EDIT-class commands, two for each of the three commonly used
editors:
Command Name
Program Create File Edit File
E CETV ETV
SOS CREATE EDIT
TECO MAKE TECO
CREATE and MAKE
These commands take a file name as the argument. SNAIL will call the editor
and tell it to initialize the file of that name. For CREATE, SOS is started
in line insertion mode. TECO (the MAKE command) will be initialized to
write on the specified file.
EDIT and TECO
These commands take a file name (with optional project-programmer name) as
the argument. SNAIL remembers the name of the last file that was edited in
a tmpcor file named ED. (A tmpcor file is a simulated file kept in core by
the monitor until the job is logged out.) If an EDIT-class command is given
without an argument, SNAIL will use the argument that it remembered.
If no extension is specified in the argument and no file with the given name
and blank extension can be found, then the user's directory is searched for
any file with the given name and one of several standard extensions. The
standard extensions are searched in the order:
FAI SAI F4 PUB POX MAC LSP LAP PAL WRU NSA OSA LST CMD TXT
If none of these is found, the first file listed in the directory with the
correct name and any extension is edited.
If a user specifies a disk area other than his own current (alias) area,
then the edited file will be put on his disk area and the source (from the
other area) will not be changed.
The editors have a read-only mode in which files may be examined by using
editor commands, but not changed. To get read-only mode type /R after the
file name in the edit command (e.g., ETV M.SAI/R). Read-only mode in SOS
prohibits any commands that would change the file. In the E editor, the
mode may be changed from read-only to read-write at any time.
CETV and ETV
These are the create and edit commands for the E editor. They do not run
the SNAIL program; instead, E itself simulates the SNAIL functions. There
are some differences between these and the other editor commands:
1. The command can include /nP and /nL switches for page and line numbers
and the /N switch for no-directory mode as well as /R for read-only. E
saves its position in the file when it exits, so a later ETV command with no
argument will continue the edit from the same point in the file.
2. If you specify a PPN with the filename given, E will let you edit the
file on that disk area instead of copying the file to your current area as
the other editors do.
READ
The READ command starts E in a special mode, called book mode, used to read
long files over an extended time period. In this mode, E does several
things differently from the normal editing procedure:
1. If there is a file with the name in the READ command, the extension BKP,
and a PPN matching either that given in the command, your ALIAS PPN, or your
login PPN (tried in that order), it is used as a SNAIL file to determine
where to start editing the specified file. This "bookmark" file is not
deleted by LOGOUT, so you can continue reading at a later session. The
file, if found, is updated when you exit from E; if there was no BKP file,
one is created on your (alias) area when you exit. However, if you exit
from E while on the last page of the file, the BKP file will be deleted (E
assumes you have finished reading the book in this case).
2. A READ command with no argument uses tmpcor files like the ETV command
does, but the tmpcor filename used is different, so you can alternate ETV
and READ commands for different files with no confusion.
3. E does not allow you to modify the file when using book mode.
SNAIL: COMPILE-Class Commands
There are three types of COMPILE-class commands: COMPILE-type commands,
which abbreviate a series of commands to compilers (and other language
processors) and loaders; DOCUMENT-type commands, which process a document;
and LOADBUF-type commands, which load the line editor buffer with a sequence
of commands much like the DO processor (see Section 5.7). Each
COMPILE-class command, if given with arguments, remembers both the command
and the arguments in a tmpcor file named CM. This is useful because all the
editors allow an exit-and-go command (in SOS, the G command; in E, the
CONTROL-X GO command; in TECO, the EG command). The exit-and-go feature
runs SNAIL in a special way which makes SNAIL re-execute the command that it
remembered.
SNAIL: DOCUMENT-Type COMPILE-Class Commands
The DOCUMENT-type COMPILE-class commands are the easiest to describe. These
commands, PUB and POX, run the document processors PUB and POX. Both
commands take a file name as an argument, with optional switches. If an
extension is specified with the file name, that file is processed by the
appropriate document processor. If, on the other hand, no extension is
specified with the file name, the user's directory is searched first for the
file with the given name and extension .PUB or .POX, depending on the
command, then for the file with the given name and no extension. Whichever
of those files is found first is the one which will be processed by the
document processor.
Switches to the document processor may be specified in parentheses
immediately following the file name.
Examples of use:
POX FOO.POX
PUB FOO.PUB(LH)
PUB XXX
The last of these will run PUB on the file XXX.PUB if it exists, otherwise
it will run PUB on XXX.
SNAIL: LOADBUF-Type COMPILE-Class Commands
The second type of COMPILE-class commands are the LOADBUF-type commands.
There are three such commands: RER, RERUN, and PROCESS. These commands
incorporate some of the features of the DO processor, allowing the user to
take advantage of the exit-and-go feature of the editors for an arbitrary
sequence of commands without paying the penalty of running an extra
processor.
The RER and RERUN commands are similar in form. Both are followed by a
processor name, an optional core size for the processor, a double-arrow, and
a string (called the object string) terminated by a line feed. SNAIL swaps
control to the designated processor after loading the object string into the
line editor buffer. The only difference is that the processor in the RER
command is retrieved from the SYS: disk area, while the processor in the
RERUN command is retrieved from the user's own disk area, or one that he
specifies explicitly. This distinction is the same one made between the R
and RUN monitor commands.
The PROCESS command is followed by a double-arrow and an object string,
terminated by a line feed. After loading the object string into the line
editor buffer, SNAIL exits.
SNAIL preprocesses the object string for all three commands by replacing
occurrences of the character double-arrow ("↔") by a carriage return-line
feed. The DO processor also does this. However, the other
character-replacement features of DO are not currently implemented.
The RER and RERUN commands are compatible in the following way. If a RER
command with its arguments has been previously given by the user and saved
by SNAIL in a tmpcor file, and the user subsequently types RERUN without any
arguments, the effect will be that of typing RERUN with the arguments of the
previous RER command. That is, the processor will be retrieved from the
user's disk area instead of from the system disk area. Analogously, if a
RER command with no arguments is given and the command file contains a RERUN
command, the designated processor is retrieved from the system disk area
instead of the user-specified disk area. In either case, the core size and
object string are processed as described above.
If a PROCESS command is given with no arguments, the command tmpcor file
must contain a PROCESS command. If a RER or RERUN command is given with no
arguments, the command tmpcor file must contain a RER or RERUN command.
Otherwise an error message will be printed and the line editor buffer will
not be loaded.
Examples of use:
RER IL↔(DSKIN FOO)↔
PROCESS↔R IL↔(DSKIN FOO)↔
RERUN IL[UCI,SYS]↔(DSKIN FOO)
The first two examples will do the same thing. The third example could be
used to allow alternating use of RER and RERUN to compare the current
version of ILISP with a new version.
SNAIL: COMPILE-Type COMPILE-Class Commands
The last type of COMPILE-class command to be described is the COMPILE-type
command. There are six COMPILE-type commands: COMPILE, LOAD, PREPARE,
DEBUG, EXECUTE, and TRY. Following the command, the user lists files which
are to be compiled or loaded.
All COMPILE-class commands normally cause compilation of the specified
source files. All but the COMPILE command may cause execution of a loader
(LOADER or LINK) to create a core image, possibly including a debugger. The
table below summarizes the actions of the COMPILE-type commands.
REL file Core Image Debugger Execution
COMPILE yes
LOAD yes yes
PREPARE yes yes yes
EXECUTE yes yes starts the user program
TRY yes yes yes starts the user program
DEBUG yes yes yes starts the debugger
The COMPILE command takes as arguments one or more file descriptors,
separated by commas. SNAIL will cause the appropriate translator to be used
for each of the files. The COMPILE command does not produce a core image;
to get an executable core image one of the other COMPILE-type commands must
be used.
LOAD does a COMPILE if necessary and then starts a loader (LOADER or LINK).
The loader takes the .REL files that were generated by the compilers and
combines them into an executable core image. When the loader is done, it
exits to the monitor. This command makes a core image but does not start
it. If any SAIL program is loaded, the loader will be instructed to request
the current SAIL segment.
PREPARE is like LOAD, but a debugger (BAIL for SAIL programs, RAID for other
programs when the user is at a display, and otherwise DDT) is loaded with
the user's program.
EXECUTE is like LOAD, but instead of exiting, the loader starts the program
it loaded at its specified starting address.
The TRY command is like EXECUTE, but it loads a debugger (BAIL, RAID, or
DDT, as in the PREPARE command) with the user program. Execution starts at
the program's starting address.
DEBUG is like TRY except that rather than starting the user's program it
starts the debugger (RAID or DDT -- if the debugger is BAIL this command is
treated exactly the same as TRY). The user may give commands to the
debugger to start his program, to plant breakpoints, etc.
SNAIL writes tmpcor files for each processor involved in compiling or
loading the files specified in the user's command string. SNAIL also
attempts to minimize unnecessary compilations by checking the creation dates
for the files the user wants compiled; for example, if the command was
EXECUTE X1.SAI,X2.SAI
and the file X1.REL has a later creation date than the file X1.SAI, SNAIL
assumes that X1.SAI has not been changed since it was last compiled, and
omits X1.SAI when it tells SAIL which files to compile. If the REL file and
the source file have the same time written, then the file is compiled again
for safety, in case the source has been changed.
The user can override SNAIL's date-checking by specifying certain switches.
A SNAIL switch is selected by including a slash ("/") followed by the
appropriate switch name. Switches which affect the date-checking actions of
SNAIL are the following, where an asterisk ("*") following a switch
indicates that that switch selection is the default for SNAIL:
/COMPILE Force recompilation without checking the dates of .REL
files.
/-COMPILE * Check dates of both source, .DMP, and .REL files and act
accordingly.
/REL Force loading from the .REL file if it exists.
/-REL * Check dates of both source, .DMP, and .REL files and act
accordingly.
/NOLOAD Don't issue a loading request for this file.
/-NOLOAD * Issue a loading request for the file if one is called for.
/LONLY (Implies /COMPILE, /NOLOAD, and /NODMP.) A listing should
be made for this file, but no load request for it should be
issued.
/-LONLY * Treat this file normally.
/CONLY (Implies /COMPILE, /NOLOAD, and /NODMP.) A cross-reference
listing should be made for this file, but no load request
for it should be issued.
/-CONLY * Treat this file normally.
/LIBRARY (Implies /REL.) Force the loader to search this file as a
library.
/-LIBRARY * Treat this file normally.
/NODMP Don't include the .DMP file in date-checking or deciding
which file to give control to first. This switch has no
inverse.
SNAIL remembers the last COMPILE-type command with arguments it was given,
just as it does for DOCUMENT-type commands and LOADBUF-type commands, in a
tmpcor file named CM. This "remembering" may be turned off for COMPILE-type
commands by using the /NOCMFI switch; if this switch appears in a command,
the CM file will not be written for that command. This switch is useful
when using either a LOADBUF-type command or the DO processor, and including
within the command string another SNAIL COMPILE-class command; if /NOCMFI
were not specified, the second command would be saved in the CM file instead
of the first.
The simplest way to translate several programs is to create them with file
extensions which define the processor to be used; then give a single COMPILE
command with all these names separated by commas. (If a standard extension
is specified for a file, SNAIL cannot be convinced to use some other
processor.) Extensions which SNAIL knows about are the following:
.FAI signals a Fail program
.SAI signals a Sail program
.MAC signals a Macro program
.F4 signals a Fortran program
.PAL signals a Palx program
SNAIL does not require file extensions to be typed explicitly. For the
command COMPILE FOO, SNAIL will look for any file named FOO and check its
extension. If a file FOO is found that does have one of the standard
extensions, SNAIL will select the corresponding translator. If a file does
not have a standard extension, SNAIL can be told which translator to use by
giving that information in the command string. Switches which tell SNAIL
which translator to select are the following:
/FAIL Process this file with the Fail assembler.
/-FAIL Process this file with some translator other than Fail.
/SAIL Process this file with the Sail compiler.
/-SAIL Process this file with some translator other than Sail.
/MACRO Process this file with the Macro assembler.
/-MACRO Process this file with some translator other than Macro.
/F4 Process this file with the Fortran compiler.
/-F4 Process this file with some translator other than Fortran.
/PALX Process this file with the Palx assembler.
/-PALX Process this file with some translator other than Palx.
SNAIL: More on File Names
A project-programmer name (PPN) may be included with each file name in the
command for COMPILE-type commands, just like for other SNAIL commands. The
PPN specifies the disk area from which the file is to be read. The PPN,
enclosed in square brackets ([ and ]), usually follows a file name; in this
case the PPN applies only to the preceding term. If a PPN appears before a
file name, then that PPN is sticky (i.e., it applies to all the terms that
follow) for the rest of the command until another sticky PPN is seen.
A name followed by a colon (:) is a device name (which is sticky). Some
devices are non-directory devices (for instance, TTY: and MTA:); a file name
need not follow specification of such a device. For example, the command
COMPILE TTY:/SAIL
compiles, using the SAIL compiler, input from the user's terminal.
SNAIL: More on Switches
Switches are allowed in COMPILE-class commands by including a slash (/) and
the switch name, e.g., /LIST. Switches allow the user to select options.
In general, a switch placed before a file name is sticky. Switches placed
after a file name are not sticky; they apply only to the preceding term.
Specifying a minus ("-") before a switch turns off that switch. For
example, the command
COMPILE/FAIL A,B,C/-FAIL
will compile the files A and B using the FAIL assembler, and will compile C
using some other translator depending on extensions of files with file name
C.
SNAIL: Concatenation of Source Files
It is often desirable to break up a program into two (or more) separate
files which have only one END statement at the end of the last file. One
reason for breaking up a program is because it is very long, and it would be
inconvenient to keep and edit such a large file. Another reason for
separating a program is to allow a portion of the program text to be shared.
Several files can be processed together as one big translation by separating
their names with plus signs (+) rather than with commas. For example,
COMPILE DATA+PROGRM
treats the files DATA and PROGRM as if they were one large file and produces
one relocatable binary file, PROGRM.REL. SNAIL will not allow concatenation
of source files that specify inconsistent processors.
Normally, the REL file will have the name of the last file in the command
string; it can be given some other name by putting the desired name and an
equals sign (=) at the front of the argument list, e.g.,
COMPILE FOO=SYMS+PROGRM+IOPACK
would do one translation as if SYMS, PROGRM, and IOPACK were one large file
and produce relocatable binary output on the file FOO.REL.
Occasionally, a header file must be assembled with several other files,
e.g.,
COMPILE ACUMS+SINE,ACUMS+COSINE,ACUMS+TANGNT
The brokets (< and >) feature allows this to be done more simply:
COMPILE ACUMS+<SINE,COSINE,TANGNT>
Brokets may not be nested. Also, a plus sign may not follow a right broket;
e.g., the following command is illegal:
COMPILE <A,B,C>+ENDS
SNAIL: Producing Symbolic Listings
Assembly listings have the original code as it appears in the file plus the
octal values that the code represents with the relative locations that the
octal values go in. Assembly listings can be generated by means of a /LIST,
/LONLY, /CREF, or /CONLY switch in the command.
The /LIST and /LONLY switches will produce a file with the same name as the
REL file and extension LST. Such a file may be spooled or typed. The two
switches differ in that the /LONLY switch implies /COMPILE, /NOLOAD, and
/NODUMP; i.e., it means that the only thing to do with the file is make a
listing for it, and no REL file will be generated by the compiler for the
source file. Note that COMPILE FOO/LIST will not compile anything if a
current FOO.REL exists (this is another instance where the /COMPILE switch
is useful). The /LIST may be used as a sticky switch or it may be applied
to particular terms. The inverse switches are /-LIST and /-LONLY.
(Processors other than the assemblers may also produce listings.)
If either the /CREF switch or the /CONLY switch appears, instead of /LIST,
it generates an expanded listing that includes a list of all the symbols
(identifiers) used in the program and the line numbers on which each symbol
appears. This is called a cross-reference listing. These listing files
cannot be printed directly. Instead, they must be processed by the
cross-reference lister program, CREF. This is done by the CREF command (see
page 64). The /CONLY switch differs from the /CREF switch in that the
source file will always be compiled, and no binary file will be generated by
the compiler for the source file. The distinction between the /CREF and
/CONLY switches is the same as that for the /LIST and /LONLY switches
described above. Note: not all the processors can produce a cross-reference
listing. Consult the appropriate manual to find out if a given processor is
capable of generating one.
SNAIL: Generating Core Images and DMP Files
The commands EXECUTE, DEBUG, LOAD, PREPARE, and TRY each generate an
executable core image. Core images are made by translating source files (as
in the COMPILE command) and then running a loader (either LINK or LOADER),
which takes the REL files and produces a core image from them. For the
DEBUG, PREPARE, and TRY commands, the loader is instructed to load a copy of
RAID (or DDT if the user is at a Teletype) and the program symbol table with
the core image.
Several SNAIL switches are relevant to the selection of a loader, and to the
actions of the loader once it starts loading. These switches are listed
below. None of these switches may be negated; i.e., a minus sign may not be
used with them.
/LINK The LINK loader will be used to create the user's core image.
/LOADER The LOADER loader will be used to create the user's core image.
/BAIL If the command specified a debugger (i.e., if the command was
DEBUG, TRY, or PREPARE), BAIL will be loaded.
/RAID If the command specified a debugger, RAID will be loaded.
/DDT If the command specified a debugger, DDT will be loaded.
/MAP The absolute values of all the global symbols will be listed in
a legible way on a file named MAP.MAP; this may not work for
LOADER.
/NOSAISEGThe Sail segment will not be loaded.
/SAVE A disk dump will be made of the core image. The dump file will
have the same name as the first REL file and extension .DMP; it
can be given some other name by putting the desired name and a
left arrow (←) in the command string. /SAVE is unnecessary if
the left-arrow construct is used.
The command
TRY DUMP←SINE,COSINE/SAVE
translates the programs SINE and COSINE, producing SINE.REL and COSINE.REL.
The LOADER is run. Because the TRY command requests a debugger, RAID.REL
(or DDT.REL) is loaded from the system area. SINE.REL and COSINE.REL are
loaded next. Then the LOADER makes a dump copy of the core image in the
file DUMP.DMP and starts the program.
If there already exists a DMP file of the right name and if it has a
creation date more recent than those of the source files, no loading will be
done. Instead, the dump copy itself will be called in. Reloading may be
forced by the /NODMP or /NODUMP switch in the command line. Both an equals
sign and a left arrow may be included in a command string. For example:
COMMAND REL DMP
TRY SINE+COS/SAVE COS.REL COS.DMP
TRY DUMP←SINE+COS/SAVE COS.REL DUMP.DMP
TRY DUMP=SINE+COS/SAVE DUMP.REL DUMP.DMP
TRY FOO←DUMP=SINE+COS/SAVE DUMP.REL FOO.DMP
SNAIL: Library Searches
Several REL files may be combined into a library. A library is a special
REL file from which routines may be independently selected. Library files
are made by combining REL files together using the FUDGE2 program (which is
described in DEC documentation). For example, sine, cosine, and tangent
routines might be combined into a trig library, TRIG.REL. Then, if a
particular program used just the sine routine, instead of loading the entire
trig package it would be able to select only the sine routine. The loader
will search library files and load only the programs that are needed. The
/LIBRARY switch after the name of a library file tells SNAIL to request this
loader feature. The /LIBRARY switch may also be used as a sticky switch;
its inverse is /-LIBRARY. Suppose there is a program called NLT which uses
the sine routine that was included in TRIG.REL. Then the command
LOAD NLT,TRIG/LIBRARY will cause NLT to be loaded and TRIG to be searched.
The LOADER notices that NLT requires SINE.REL and searches TRIG.REL for it.
Suppose another program, XLT, requires routines from two library files,
TRIG.REL and IOPACK.REL, and must be loaded with another program LT. Then
any one of the following commands could do this:
LOAD XLT,LT,/LIBRARY TRIG,IOPACK
LOAD /LIBRARY XLT/-LIBRARY,LT/-LIBRARY,TRIG,IOPACK
LOAD XLT,LT,TRIG/LIBRARY,IOPACK/LIBRARY
Programs which use library files must be placed before the library file
names in the command. This is because the loader cannot know what routines
to extract from each library until it has loaded the programs that require
library routines.
SNAIL: Alternate Processor Features
Processors other than SAIL, FAIL, FORTRAN, PALX, or MACRO may be specified
by using the alternate processor feature. The switch /PROCESSOR DEV:NAME
specifies an alternate processor. In this switch, DEV (assumed to be DSK,
if absent) is the device name on which to find NAME.DMP, the core image file
of the alternate processor. Once the /PROCESSOR switch is used, SNAIL will
recognize the extension NAM (i.e., the first three letters of the processor
name) and the switch /NAME (the processor name) in the command line. A
project-programmer name or device name may be used in specifying the
alternate processor.
For example, for a user to translate the program SINE using a processor
named PROC on his disk area, he could use the command:
COMPILE SINE/PROCESSOR PROC
When a standard processor is used, it is known that it will take a text
source file and produce a binary REL file, and possibly a text LST file.
With alternate processors there is no such guarantee. An alternate
processor may process a text file into a new text file which becomes input
to a standard processor. It is possible to specify all these functions in a
single COMPILE-type command.
If an alternate processor generates a text file instead of a REL file,
loading must be inhibited. The /NOLOAD switch accomplishes this. The
/NOLOAD switch must be used for each term that does not produce a REL file
(except in the COMPILE command, which does no loading anyway). The inverse
switch is /-NOLOAD.
Suppose the preprocessor, PRE, translates the file BAZ into a file FOO which
is a FAIL program. FOO must be translated when PRE is done. Also, MAIN and
SINE must be translated and loaded with FOO. The command:
LOAD FOO=BAZ/PROCESSOR PRE/NOLOAD,MAIN,SINE,FOO/FORWARD
will do all of this. The /FORWARD switch is necessary because the file FOO
does not exist at the time the command is given. Including the /FORWARD
switch prevents SNAIL from looking for FOO; SNAIL will assume that FOO
magically appears before FAIL is called. The inverse switch is /-FORWARD.
The processor DO (see Section 5.7) is another example of an alternate
processor. The DO program writes the CM tmpcor file to force the
exit-and-go command from the editors to run DO again.
SNAIL: Translator Switches
Switch names enclosed in parentheses "(" and ")" are passed directly to the
translator. The documentation for each of the translators explains what
switches are available. The switches passed in this way appear on the
source file specification. Sometimes it is necessary to put switches on the
binary or listing term. For this purpose, there are two other switch
constructions.
The construction (#1,#2), where #1 and #2 are any switch strings, passes #1
to the binary term and #2 to the source term. The construction (#1,#2,#3)
passes #1 to the binary term, #2 to the listing term, and #3 to the source
term. For example,
COMPILE/LIST FOO(AX,BY,CZ)
will pass the switch string "AX" to the binary term, "BY" to the listing
term, and "CZ" to the source term.
SNAIL: Loader Switches
Switches to the loader may be specified in a COMPILE-class command.
Switches to LOADER appear as a percent sign (%) followed by a letter (or a
number and a letter) in the command string of one of the LOAD, TRY, EXECUTE,
PREPARE, or DEBUG commands; switches to LINK appear as a percent sign
followed by some character not appearing in the switch string, followed by
the switch string, followed by the character that appeared after the percent
sign. In either case, the switch string is directly specified to the
appropriate loader. Examples:
EXECUTE FOO1,FOO2,FOO3%M
TRY BIGPRG.SAI%100K
TRY/LINK BIGPRG.SAI%"RUNCOR:100"
LOADER and LINK switches are listed at the end of this appendix. For a full
description of what the other switches above mean, consult the DEC
documentation for LOADER and LINK. The LOADER has been modified for
Stanford, so the DEC documentation does not accurately reflect the state of
the software. Consult a wizard if necessary.
SNAIL: Command Files
COMPILE-class commands are sometimes too long to fit on one line, or are too
complex to be typed correctly every time. To solve this problem, arguments
can be read from a file. The text contained in such a file is read by SNAIL
as if it had been typed as the arguments to a command. The command file may
contain any features available in a COMPILE-class command. Any text between
a semicolon and the next line-feed is ignored; carriage-returns and
line-feeds are also ignored, and hence may not be used to separate file
names or other identifiers.
To use a term as a command file write an at sign (@) before the command file
name, e.g., LOAD @SYS. Upon scanning the at-sign followed by a file name,
SNAIL looks for a command file with that name; if no extension was
specified, SNAIL checks first for the file with extension .CMD, then for the
file with no extension and the specified name. The command file SYS might
look like the following file which is used to assemble the entire operating
system:
%S%B%? SYSTEM=HEAD(XLR)+OUTER+JOBDAT+ALLDAT+IMPDDB;
+LOWCOR+SYSMAK+PARSER+SYSINI+COMCSS+CLKSER+PAGSER;
+UUOCON+SPWSER+SCHEDU+SWPSER+CORE;
+DPYSER+TTYSER+LINED;
+DSKSER+DSKINT+DTCSER+MTCSER+FBPACK+TVSER+LPTSER+ELFSER+CARSER;
+XGPSER+PTPSER+PTRSER+DACSER;
+IMPCLK+IMPREG+IMPUUO+IMPINT;
+PATCH+DDT+ONCE
SNAIL: CREF Command
This command causes a cross-reference listing to be made. All the files
made from COMPILE-class commands which used the /CREF switch are processed;
for each such file, a cross-reference listing is generated in a file with
extension LST and the name of the file being processed. (LOGOUT makes SNAIL
forget which listing files to process.) The CREF command activates SNAIL
which in turn activates the CREF program in a special way. The CREF program
when activated in this way reads a file that SNAIL wrote which contains the
names of the files to process.
SNAIL: Switch Function Summary
A "-" in the column headed "*" means the switch can be negated; e.g.,
/-COMPILE is legal.
Switch Abbrev * Meaning
/BAIL /B Use BAIL if a debugger is required.
/COMPILE /COM - Force re-compilation without checking the dates of
REL files.
/CONLY /CON - Force re-compilation and produce only an extended
listing to be input to the CREF processor.
/CREF /C - Request a cross-reference listing.
/DDT /D Use DDT if a debugger is required.
/F4 /F4 - Use F40 (FORTRAN) for this term.
/FAIL /F - Use FAIL for this term.
/FORTRAN /FORT - Use F40 (FORTRAN) for this term.
/FORWARD /FORW - Prevent SNAIL from looking for this file to decide
if the REL file is up to date.
/LIBRARY /LIB - Force the loader to search this term as a library.
/LINK /LIN Use the LINK loader to create the core image.
/LIST /L - Request a listing file.
/LOADER /LOA Use the LOADER loader to create the core image.
/LONLY /LON - Force re-compilation and produce only a listing
file.
/MACRO /M - Use MACRO to translate this term.
/MAP /MAP Request a loader map of global symbols.
/NOCMFI /NOC Don't generate a CM command file for this command.
/NODMP /NOD Force re-loading without checking the dates of DMP
files.
/NOLOAD /NOL - Prevent a loading request for this term.
/NOSAISEG /NOS Load SAIL programs with the SAIL library instead of
the SAIL segment.
/PALX /PA - Use PALX to translate this term (produces .BIN
file).
/PROCESSOR /PR - Specify an alternate processor.
/RAID /RA Use RAID if a debugger is required.
/REL /RE - Force loading from the REL file if it exists.
/SAIL /S - Use SAIL to translate this term.
/SAVE /SAV Force the LOADER to make a DMP file of the core
image.
SNAIL: LOADER Switches and LINK Equivalents
LOADER LINK Meaning
Switch Equivalent
%A %"CONTENT:ZERO" Causes a listing of all global symbols to be
printed.
%B %"SYMSEG:LOW" BLT symbols down when done loading.
%1B BLT symbols to upper segment.
%C Chain beginning with Common.
%D %"TEST:DDT" Load DDT.
%E %"EXECUTE" Start up program when done loading.
%F %"SYSLIB" Enter library search mode; search all default
libraries.
%G %"GO" Finish loading, make final links, and exit.
%H %"DEBUG:RAID" Load and start RAID.
%I %"NOSTART" Ignore starting address of this program.
%J %"START" Use starting address of this program.
%nK %"RUNCOR:n" Adjust to n K of core (2n pages) when done
loading.
%L %"SEARCH" Search this file as a library.
%M %"MAP:END" Print storage map.
%N %"NOSEARCH" Leave library search mode.
%nO %"SET:.LOW.:n" Set program origin to n, absolute.
%P %"NOSYSLIB" Inhibit automatic library search for undefined
globals.
%Q %"SYSLIB" Allow automatic library search.
%R Chain beginning with resident module.
%S %"LOCALS" Load symbol table also.
%T %"DEBUG:DDT" Load and start DDT.
%U %"UNDEFINED" Print current list of undefined globals.
%V %"TRY:RAID" Load RAID.
%W %"NOLOCALS" Load without symbols.
%X %"CONTENT:NOZERO" Do not list all globals.
%Y Load SAILOW for 2 segment SAIL programs.
%Z %"RUN:LINK" Restart LOADER.
%< Disallow loading into upper segment.
%1< Allow loading into upper segment and load there
next.
%n< (n≥400000) Set upper segment relocation to n.
%-< Allow loading into upper segment and load in
lower next.
%? Sort symbols.
SNAIL: Error Messages
Obvious errors
No command file.
Incompatible commands.
You gave a command with no arguments, and either no command had been
saved or the two commands (the one you typed and the one which had
been saved) aren't compatible.
Unrecognizable file name.
No such device.
Unrecognizable processor name.
You mistyped a file or processor specifier.
Not a display.
You're trying to load the line-editor buffer and you're not using a
display.
Missing double-arrow or invalid core size.
Missing double-arrow.
The LOADBUF-type commands must always be followed by a double-arrow.
Too many files.
Currently the PUB and POX document compilers can only process one
document at a time.
File not found.
Either some file named in the command does not exist, or it doesn't
exist with the correct extension. You'll get this message if you
try to use the /FAIL switch with FOO.SAI, for instance.
Unknown command.
Command error.
Illegal character.
Something is wrong with what you typed, and SNAIL didn't find in the
command what it expected to find. For example, a file name didn't
follow an at-sign.
Nested brokets illegal.
Unbalanced brokets.
Can't use "=" with brokets.
You're not using brokets correctly. Each of the files within the
brokets will produce a different REL file, so the equal-sign
construct can't be used.
Unknown switch.
Negation of this switch not allowed.
Invalid switch string.
Illegal LOADER switch.
Illegal LINK switch.
Subtle errors
Empty command file.
Error in command file.
Tmpcor file too big.
The CM command file which SNAIL is attempting to read is messed up
somehow.
Storage overflow.
Your command included too much of something (file names, device
names, alternate processor specifications, translator or loader
switches), or there are too many files in your directory that have
to be date-checked.
Horrible errors (a wizard should be consulted)
SNAIL bug.
SNAIL allocation error.
Typing CONTINUE followed by a carriage return when the latter
happens might work.
Can't open channel.
This is probably a bug in SNAIL.
Couldn't create file.
A disk file could not be written correctly. Possibly a file is
write protected or in use by some other job. Otherwise you may need
help.
UFD missing.
You are aliased to a non-existent disk area. Otherwise, you need a
wizard.
APPENDIX 2--COPY
This appendix is taken from COPY.RPH[S,DOC], SAILON 61.1, the COPY manual.
The manual first describes the basic COPY command with all possible options,
and then lists the other monitor commands which run COPY and describes their
special functions.
COPY: Syntax
In this section the following rules are observed. Anything in curly
brackets is optional. Anything enclosed in brokets (e.g., <.......>) has a
syntactic definition of its own and is described elsewhere. Upper and lower
case letters are legal anywhere. A break character is something which is
not a letter, a number, or a "*". This will become important when you try
to figure out some of the error messages. In this manual the term sticky
means that the sticky item is applicable until changed or until the end of
the current command.
The basic syntax for all COPY commands is:
COPY {{<destination term>}{,<list term>}←}<source term>
The character "{ }="{ } may be substituted for "{ }←"{ }.
<destination term>::=<switch term>
<source term>::= <switch term>{,<source term>}
<switch term>::= {<switch list>space}<term>{<switch list>}
<list term>::= <term>
<term>::= {dev:}{filnam{.ext}}{[prj,prg]}
| {<switch list>}{dev:}{[prj,prg]}{<switch list>}
@<spec term>
| \<filehack selector>
| ∂{ <pn> | * }{.ext}{[prj,prg]}
<spec term>::= {<spec switch list> }{dev:}{filnam{.ext}}
{[prj,prg]}{<spec switch list>}
<switch list>::= {/<switch>}{(<page list>)}{<switch list>}
<spec switch list>::={/<switch>}{<spec switch list>}
<page list>::= <page term>{,<page list>}
<page term>::= N{:M}
COPY: General Operation
COPY reads data from the logical file(s) indicated by the source term,
performs any operations requested by the switch term(s), and writes the data
on the logical file indicated by the destination term. Any listing
information goes to the list term.
Dev and p,pn are sticky in the source; that is, if they are absent, the last
one specified is used. The default device is DSK and the default p,pn is
blank (those of the current job).
A single * may be substituted for any of the following:
filnam
ext
p
pn
A * in the source term means "all." A * in the destination term means "same
as in source file being transferred."
If filnam.ext is absent in the destination term, *.* is assumed. If the
destination filnam.ext are specified (no *'s), all source files will be
concatenated into one big file with that name.
For example:
COPY DING←FOO,BAZ
would cause a file named DING to be created on your disk area comprised of
the files FOO and BAZ from your area. If filnam.* or *.ext is used in the
destination term, the source files will be copied onto the destination one
by one with the new filename or extension. <destination term>← may be left
out and DSK:*.*← will be assumed. For source terms with directory devices
you must specify the filnam.ext.
If you try to write on top of a file which already exists, you will be given
the option of deleting it or not. If any of the source files you have
specified do not exist, you will be informed and given the proper option.
If a string of source descriptors is specified, the string is executed from
left to right.
You cannot write a file in two different modes (e.g. FIL1←TTY:,DSK:FIL2).
However FIL1←TTY:,DSK:FIL2/ASCII is quite acceptable (/ASCII causes the data
mode to be 0). Data modes are explained in the UUO Manual.
The <spec term> construct causes the scanner to continue scanning in the
file specified by the term. The term must indicate a unique file. When end
of file occurs the scanner again reads from the terminal. No spec terms may
appear in the file. Switches preceding the "@" are treated as sticky
switches. Switches following the "@" are treated as sticky switches only
while reading from the indirect file. In a sense the indirect file is a
"program block." Upon leaving the "block" all defaults are reset to those
in force just before the "@". A device name and p,pn may precede the "@",
in which case the defaults are changed to those, but no operation is done.
The device and p,pn used in the spec term do not affect the current
defaults.
The \<filehack selector> construct for a term is a special shorthand feature
to allow commonly referenced files which would normally require a large
amount of typing to be entered quickly. The following is a list of legal
filehack selectors and what they are short for (<prg> stands for the current
programmer name right justified). Only enough letters to uniquely identify
the name among those in this list need be typed.
Filehack
Selector File selected What for?
MSG <prg>.MSG[2,2] Current user's mail file
MAIL <prg>.MSG[2,2] Current user's mail file
PLAN <prg>.PLN[2,2] Current user's plan file
PLN <prg>.PLN[2,2] Current user's plan file
NAP <prg>.NAP[2,2] Current user's NS notification file
NS <prg>.NAP[2,2] Current user's NS notification file
RPG *.RPG[*,<prg>] All of current user's RPG files
OPTION OPTION.TXT[*,<prg>] All of current user's option files
DOWN MAINT.TXT[2,2] System downtime forecast
DIGEST DIGEST[2,2] Latest A.P. news digest
NOTICE NOTICE.TXT[2,2] System message file
GRIPES GRIPES.TXT[2,2] System gripe file
DAY DAY.TXT[2,2] Daily birthday or holiday message
The ∂{<pn>|*} construct is another form of shorthand for referencing MAIL
files (see Appendix 4). If no argument follows the ∂ then the current
user's mail file is indicated. If <pn> is used, it means that user's mail
file. And lastly, if * is used the file NOTICE.TXT[2,2] is selected (this
is the public mail file). The default extension (.MSG) and PPN ([2,2])
implied by ∂ can be explicitly overridden, e.g., ∂PRG.PLN will get user
PRG's plan file.
There is a page counter in COPY which monitors ASCII output for form feeds.
When a form feed is encountered, the counter is incremented. If a page list
is used in a term, N is taken as the starting page of this output and M (or
N if M is absent) as the ending page. Output is only active when the
counter is within the range of the page list (e.g., LIST COPY(21) would list
page 21 of the file COPY). When the end of the first term is exhausted,
control is transferred to the next term, and so on until the right
parenthesis is reached, at which point output ceases. If more than one file
is indicated, the page list is re-scanned for each one. Page lists are
never sticky. An asterisk (*) may be used in a page list instead of the
final page number, to denote the last page, e.g., LIST COPY(3:*) would list
all but the first two pages of the file COPY.
Switches will be described in a section of their own. See /LIST for an
explanation of "list term."
Logical device names may be used, but all switches apply to the physical
device. The following are legal physical devices for the copy command:
DSK UDPn DTAn MTAn TTYn
LPT XGP PTR PTP TTY
When the special character ↓ (↑A on Teletypes) appears, the scanner will
read the line character-by-character without interpretation until the next ↓
(or ↑A). This is useful for allowing non-alphameric characters to be
included in filenames, e.g., editor or spooler temporary files.
For numeric input there is always a default radix (either decimal or octal).
Sometimes, however, it is desirable to force one or the other. A number
preceded by a single quote is always interpreted in octal. A number
preceded by a double quote is always interpreted in decimal.
COPY: Device Peculiarities
Non-Directory Devices:
If the source device doesn't have a directory and the filename and/or
extension is specified by a *, then a generated filename and/or extension is
used. The generated filename starts out as AAAAAA and the generated
extension starts as COP. Either of these may be changed by specifying a
filnam.ext in the source term. If a star (*) is used, the old name is
retained; otherwise it is replaced by the new one. At the beginning of each
term the filename is either changed to that which was specified or
incremented by one letter (i.e., AAAAAZ.COP is followed by AAAABA.COP). The
following example may clear things up:
COPY DSK:*.*←MTA0:,,FOO.*,,*.BAZ
This would read 5 files from MTA0 and give them the following names:
AAAAAA.COP
AAAAAB.COP
FOO.COP
FOOA.COP
FOOB.BAZ
Disk:
If you attempt to write on an area which is protected by a password, you
will be asked the password. If you answer <cr> to the request for a
password COPY will assume that you don't know it and do the appropriate
thing. You may delete files belonging to other users (please exercise
extreme care). However, if you attempt to delete a file on a user file
directory whose programmer name is different from the one you used when
logging in, you will be asked if you are sure. All normal file protection
applies to deletions.
User Disk Pack:
COPY treats new format (file structured) UDPs like the main file disk. The
file-structure simulation which COPY provided for old format UDPs is no
longer available.
DECtapes:
DECtapes are assumed to be in PDP-6 format (which is the current format our
system uses). See the UUO Manual for an explanation of DECtape formats. If
the directory becomes full (more than 30 files), you will be told which was
the first file not transferred. If the DECtape becomes full, the file
currently being written may be incomplete. An attempt is made to detect
this condition before the transfer is initiated, but this is not always
possible. The total file capacity of a DECtape is about 71.4K words. In
order to write on a DECtape the OFF-WRITELOCK-WRITE switch must be in the
WRITE position. If not, you will be told to set it.
Magnetic tapes:
Mag tapes may be made to look like directory devices by use of the /SAVE
switch which is described later. All mag tape switches are separate for
input and output (see rules about switches in switch section). This means
that mag tape switches in the destination term don't apply to the source
terms.
Paper tape:
Paper tape I/O is done in binary non-checksummed mode unless otherwise
specified (see /ASCII). You should turn off the paper tape reader when you
are done. A paper tape with a jagged end may cause spurious data to be
read. It is best to tear it evenly at a fold.
Teletypes:
Since some terminals cannot reproduce the full Stanford character set, COPY
provides the standard SOS conversion for output of some special characters
on model 33 and model 35 Teletypes which are not in full character set mode.
See Appendix 13 for the SOS representation.
On display terminals, COPY displays the number of the page being read (if
>1) if reading in mode 0, i.e., the number of form feeds seen +1.
Spooling pseudo-devices:
COPY recognizes two pseudo-device names, TPL: and PGX:, to allow spooling of
the output of some copy function to the LPT or XGP, respectively. These
device names may be used only in output terms, and may not be used with file
names. COPY creates a file on the [SPL,SYS] directory containing the
desired output, and enters a spooling request for the appropriate device.
The file is deleted after spooling. For a standard COPY command, the effect
is essentially equivalent to the recommended SPOOL/RECOPY (see page 75);
the main advantage of this capability is for direct spooling of list terms,
e.g.,
DIRECTORY TPL:←[*,SYS]
to spool a list of the [*,SYS] file directories. (Note: It is claimed that
these pseudo-device names stand for The Pseudo Lpt and Pseudo Graphic
Xerox-machine respectively.)
COPY: Switches
The term sticky means "applies until the end of the line or until changed
temporarily or permanently by some means." Most switches appearing in the
destination term are carried over as sticky switches in the source. Those
switches which are separate for destination and source terms are indicated
by a star (*) preceding the switch name. Switches appearing in the source
term are sticky only if they precede the term with which they appear.
Otherwise, they apply only to the current term and must follow it. Only the
first six characters of a switch are significant. You are only required to
use enough characters to uniquely specify the switch.
The following switches are now available:
SWITCH ABBREV MEANING
ALL AL This switch includes all of the input file in the
output even if the file uses the offset feature
on the disk to "hide" some data at the beginning.
See the disk offset feature in the UUO Manual.
ASCII A This forces transfers to be in ASCII. Beware!
This switch will cause SOS line numbers to become
part of the text.
ASK ASK This causes dev:filnam.ext[p,pn] to be printed
for each file under consideration followed by a
question mark. If you answer "Y" the operation
will proceed, if you answer "G" the operation
will proceed but you will not be asked the for
the rest of the term, otherwise the file will be
skipped.
BINARY B This causes the data mode to be 13 and forces
word by word transfer of data.
BLOCKED BL This causes records to be ended on output
whenever they are ended on input.
CONVERT C This causes copy to treat the character following
a line feed and the first character of a file as
a FORTRAN control character. Be careful, this
happens on output.
*DENSITY=n DE This sets the density in bpi to n where n equals
800, 556, or 200. This switch is ignored for
devices other than mag tapes. The system default
density is 556.
*DSPOOL DS This switch, when used with destination or list
terms, causes the output file to be spooled with
the /DELETE switch. Output device must be disk.
This switch is illegal in source terms.
DUMPED DU This causes each 36 bit word from the input
device to be converted to the ASCII
representation of the octal number it represents
and to then be sent to the output device. The
following format is used. A "word number" is
sent to the output device which indicates which
word in the file is the first word in this row.
Then 8 data words are transferred. Then a
<cr><lf> is inserted. If desired, a "page list"
may be used for /DUMP; however, the values are
those of word addresses in the file instead of
pages. However, if the /SEARCH switch appears
before this switch (or the DIRECTORY monitor
command was typed), this switch has a different
meaning: it includes in the directory listing the
date on which the file was last included in a
system DART dump, and the number of the tape on
which it was dumped. If the file has been
permanently dumped twice or more, the character
">" appears after the tape number.
*EVEN EV This sets mag tape transfers to even parity.
EXTRA=n EX Whenever a line feed is seen n extra line feeds
are put out; n must be an unsigned decimal
integer. If n=0 line feeds are converted to a
177 followed by a 21; this inhibits form ejection
at page boundaries on the line printer.
EXTRA≡n EX (Note "≡" not "=".) This switch, used with the
XGP only, sets the inter-line spacing to n raster
units.
FAST F All the names specified by the source term are
listed (no size or other info). This switch is
therefore much faster than /SEARCH.
FONT#n=file FON This switch is used when copying to the XGP to
select a font. Font number n (default is 0) is
taken from the specified file. The file
specification can include any of filename,
extension, and PPN; the defaults are
FIX25.FNT[XGP,SYS].
FOO FOO This switch is used to produce a file directory
listing meant to be read by various programs
rather than by a human being. The switch name
derives from the fact that the switch was created
for the benefit of layout and drawing programs
used in the design of the late, lamented SUPER
FOONLY computer.
FULL FU If /SEARCH is specified, this switch provides
more information than is usually given in the
directory listing; specifically, it implies
/UFDPRO, /TIME, /PROTECTION, /WRITER, and
/REFERENCED. Also, if you are at a Data Disc or
III display terminal, it implies /DUMPED. This
switch does not automatically imply /SEARCH.
GTOTAL G At the beginning of the execution of a term the
term is printed. At the end of the term, a line
is typed of the form
TOTAL= x.x n BLK pp%
where x.x is the size of the file in K and tenths
(if the file is smaller than 1K, the size in
words is typed instead), n is the number of disk
blocks allocated to the file, and pp is the
percent of the allocated space which is actually
used. This switch implies /SEARCH.
HEADER H This causes a header to be put out at what would
be the top of each page on the line printer. The
header looks like this:
DATE TIME FILNAM.EXT P,PN PAGE N-M
The current date and time are used, N is the
logical page number (number of form feeds seen
plus one), and M is the physical page of that
logical page.
IGNI IGNI This causes input errors to be ignored (no
message).
IGNO IGNO This causes output errors to be ignored.
KILL K The input file is deleted after the transfer is
finished, even if the output filename is the same
as the input filename. If the 200 bit in the
file's protection code is on, COPY asks before
deleting the file.
LIST L This causes the names of the files transferred
during that term to be listed. If the input
device is the disk the [p,pn] are also listed.
Non-directory devices will obviously list
nothing. The output will go to the "list term".
If the list term is absent, the output will go to
your terminal.
*MLENGTH=nnnn M This allows the user to specify nonstandard
length records for mag tape I/O, where nnnn is a
1 to 4 digit number interpreted in octal which
specifies the number of data words per record.
NONUMBERS N This deletes line numbers from files that have
them. This forces an ASCII mode transfer; in
fact, /NONUMBERS can be used on any ASCII
transfer. Do not use this switch on anything but
text files or you will be sorry.
NOFF NOF This suppresses output of formfeed characters.
It implies /ASCII, and can be applied to single
source files.
NOSPACES NOS This switch eliminates spaces at the end of a
line.
ODD OD This sets mag tape transfers to odd parity. This
mode is standard and is the default option.
OFFSET OF This switch implies /SEARCH, and causes the file
offset (in decimal) to be included in the
directory listing. The offset, if any, is the
number of "hidden" records at the beginning of
the file which will not normally be seen when the
file is read. See the UUO Manual for more
information about offsets.
OPTIMIZE OP This forces COPY to treat the file as one
produced by SOS, and to pack it by allowing lines
to span a record break as long as line numbers
are not the last word of a record. SOS will read
an OPTIMIZEd file, but will not write a record
ending with a partial line. A file which cannot
be read by SOS because of line numbers or page
marks at the ends of records will be "fixed" by
this switch.
PROTECTION P If this switch is preceded by /SEARCH (or used
with the DIRECTORY monitor command), it causes
the protection of the listed files to be included
in the listing and implies the /UFDPRO switch to
print the UFD protection and the UFD's default
file protection. Otherwise, it must be given
with a protection code and has a different
meaning, as in the following paragraph.
PROTECTION=nnn P This causes the output file to have the
protection nnn, where n is a digit from 0 to 7.
If no protection switch is specified, the
protection of the input file is used (for
non-disk input 000 is used). All three n's must
be present. This switch applies only to disk
output. When concatenating files, the protection
applicable to the first file transferred is used.
QUIET Q This switch prevents you from getting the message
"FILE ALREADY EXISTS...." If the output file
already exists, it is deleted without a sound.
Also, if this switch appears with /SEARCH, then
only the p,pn and the size on that p,pn are
printed. This switch also prevents being asked
for confirmation when trying to delete a file
with the 200 bit on in its protection code.
REFERENCED REF This switch is like /SEARCH below, but includes
in the directory listing an extra column
containing the date on which each file was last
read (referenced by LOOKUP).
RENAME REN A rename is done on the input file with the
output file information. /QUIET applies when the
output filnam.ext already exists.
*SAVE SA If the output device is a mag tape, four words of
directory information are written. If the input
device is a mag tape, four words of directory
information are read and compared with the source
name specified. If they don't match, that file
is skipped and the next examined until a match is
found or the end of tape is reached.
SEARCH SE This switch overrides all other switches. It
gives you more information than /LIST and
suppresses any transfers. Added to the /LIST
information, you get the size of the file in 1K
blocks (or in words if less than 1K) and the date
it was last written. If you are at a Data Disc
or III display terminal, it also lists the time
when the file was written. The information given
can be further extended by the switches /FULL,
/TIME, /PROTECTION, /WRITER, /REFERENCED,
/DUMPED, and /OFFSET. (The offset will always be
listed if nonzero for a particular file.) If a
list term is specified, all of the possible
information is listed. The output goes to the
same place as with /LIST, with the following
variation: If the "list term" is omitted, the
listing goes to your terminal and the information
and heading for disk input will be truncated to
FILNAM.EXT, [P,PN], and SIZE. If /QUIET is used
with this switch and no list term was specified,
only the p,pn and the total size of each disk
area is printed.
*SPOOL SP This is the same as /DSPOOL except that the
/DELETE switch is not used in spooling the file.
TIME TIM This switch implies /SEARCH, and causes the
directory listing to include the time as well as
the date when the file was last written.
TITLE TIT This causes a "title page" to be put out in large
block letters followed by a form feed. The title
is of this form:
FILNAM.EXT
P,PN
TIME
DATE
The date and time are when the file was last
written. For non-directory devices, <device
name>: is printed in place of filnam.ext and
p,pn.
UFDPRO U This switch implies /SEARCH but also causes the
UFD protection and the UFD's default file
protection to be printed for each PPN for which a
header is listed. These two protection codes are
output on the PPN's header line in the following
form:
[PRJ,PRG] UFD PRO=405; DEF PRO=000
The /UFDPRO switch is implied by /FULL and by
/PROTECTION (in a DIRECTORY command or following
/SEARCH). To get just these protections typed
out (without listing any files), use
DIRECTORY [PRJ,PRG]/Q/F/U. Note that if the PPN
header is not printed, the UFD protection will
not be listed.
WAIT WA This switch will automatically wait for a busy
device (e.g., XGP) without requiring confirmation
by the user.
WRITER WR This switch includes the PPN and job name of the
last writer in the directory listing for disk
files. It implies /SEARCH.
COPY: Monitor Commands
The following is a list of the monitor commands which use COPY and how they
work. The syntax is the same as for COPY.
COMMAND EFFECT
DELETE This deletes all the files specified by the source term, and
types the space reclaimed as with the /GTOTAL switch. If
the 200 bit is on in the file protection key, you will be
asked if you really want to delete the file (/QUIET
overrides this feature). The destination term is
interpreted as the list term. The list term is therefore
illegal.
DIRECTORYThis gives you all or part of the file information for the
source term(s) (or *.* if no source term is used). If /L
appears anywhere in the command string the default list
device will be set to the line printer. The destination
term is treated the same as for DELETE.
LIST This sets the default output device to the line printer and
turns on the /HEADER switch.
PRINT This sets the default output device to the line printer and
turns on the /NONUMBERS and /TITLE switches.
RENAME This allows you to change the filename, extension, PPN, and
protection of a file. The format is newname←oldname. Use
/PROTECTION=nnn to change protection.
TRANSFER This copies files from one place to another and deletes the
source files.
TYPE This sets the default output device to your terminal.
XGPLIST This sets the default output device to the XGP.
COPY: Examples
COPY DTA4:←*.*
This would cause all the files on your disk area to be written on DTA4.
COPY ←DTA4:*.*
This would cause all the files on DTA4 to be written on your disk area.
COPY <filnam.ext>/NONUMBERS
This would delete sequence numbers (if any) from the file indicated.
COPY [2,RPH]←*.*[1,RPH]
This would cause all the files on 1,RPH to be copied onto 2,RPH no matter
who you are logged in under (subject to file protection failure).
TYPE <filnam.ext>
This would cause the specified file to be listed on the terminal you are
logged in on.
LIST <filnam.ext>(2)/NONUMBERS
This would cause page 2 of the specified file to be listed on the line
printer with headers and without line numbers.
DIR LPT:←*.TXT[*,*]
This would cause the filnam.ext, [p,pn], size, etc. for all files in the
world with the extension TXT to be listed on the line printer.
COPY FOO←TTY:,FOO/ASCII
This would allow you to add text at the beginning of the file FOO (/ASCII is
mandatory).
RENAME FOO/PROTECTION=077
This would change the protection of the file FOO to 077 without doing a
transfer.
PRINT FOO
This would cause the file called FOO to be listed on the line printer
without line numbers and with a title page.
DIR[*,RPH]/QUIET
This will tell RPH the size of each of his areas without printing the
filenames and other information.
COPY TEMP←↓$ED$09↓.TMP
This copies the file $ED$09.TMP into TEMP so that you can edit it. (These
names are created by SOS.)
DELETE @DEL
This would use the file DEL as a list of files to be deleted. This method
is very good for "cleaning" your area.
DIR FOO/WRITER
This would list the standard directory information for file FOO along with
the PPN and job name of the job that wrote the file.
APPENDIX 3--SPOOL
This description of the SPOOL commands is taken from the SPOOL manual,
SPOOL.REG[UP,DOC].
Spooling provides a method of producing line printer listings of files
without the usual disadvantage of tying up a user's job while the listing is
actually being done.
To use the spooler, a user must create commands for it. A command is the
name of a file to list, and control switches. Spooler commands are created
by the monitor commands SPOOL and XSPOOL.
As an example of spooling, the monitor command
SPOOL SPOOL.REG[UP,DOC]
will cause the LPT spooler to list the file SPOOL.REG[UP,DOC].
Spooled listings are preceded by a title page (except see /NOTITLE below),
used to make it easy to separate different listings. This title includes
the file identifier, the name of the requestor and his project-programmer
name, the current date and time, and the date and time when the file was
last written. Programmer names are read from the file FACT.TXT[SPL,SYS].
Project names (of which there are few) are read from the file
XFACT.TXT[SPL,SYS].
In the discussion below, "SPOOL" is used to mean either the command SPOOL or
the command XSPOOL, except as noted. SPOOL makes requests for the LPT
spooler; XSPOOL makes requests for the XGP spooler.
To have the spooler make a listing the user must tell the spooler what
file(s) to print. This easiest way to tell the spooler what to do is by the
monitor command SPOOL. This command consists of the word SPOOL followed by
the name(s) of the file(s) to be listed. File names are separated by
commas. Each file name may be followed by switches, explained below. The
program SPOOL will send commands to the spooler.
Files to be spooled are specified in the conventional way, by file name,
extension, and optionally project-programmer name.
Asterisk, *, may be used to allow matching of any file name, extension,
project name, or programmer name. (RPG, DMP, and REL files will not be
matched by * in the extension).
Switches are allowed either preceding or following the file name. Switches
that precede the name are sticky and will be applied to subsequent names. A
switch consists of a slash, the switch name, and sometimes, a parameter.
For example, /REPEAT=5.
The following switches are available. Note that most switches occur in two
senses (e.g., delete and nodelete). This allows an explicit switch in some
term to override a sticky switch.
Switch Action
DELETE DELETE this file after printing. The file protection
NODELETE of this file must be low enough so that the spooler
can delete it. The file must belong to the requestor
(alias not allowed).
NONUMBER Omit SOS line numbers from the listing. "N" is an
NUMBER accepted abbreviation for NONUMBER.
FORTRAN The first character of each line is interpreted as a
NOFORTRAN FORTRAN carriage control character.
LPT100 The spooler will open the LPT in mode 100, instead of
LPT0 the usual mode 0. This changes some character codes.
HEADING Print a page heading at the top of each page. "H" is
NOHEADING accepted as HEADING. HEADING is the default for all
files, except:
LST or DOC extensions,
any file from any area with programmer = DOC.
The heading includes date, time, filename, and page
numbers.
TITLE Precede the listing with a title page. TITLE is the
NOTITLE default for all files.
NARROW Center the title page to fit an 8.5 inch wide page.
NONARROW
RECOPY Copy the file to [SPL,SYS] and list the copy. This
NOCOPY allows the file to be edited while the listing is in
progress.
REPEAT=n Make n copies of the listing. (REPEAT is NOT sticky,
and is not allowed in XSPOOL.)
EXTRA=n Insert n extra line feeds in the listing after every
line feed in the file. (EXTRA is NOT sticky).
DUMP Octal listing. Data will be printed as octal full
NODUMP words. (OCTAL is an equivalent switch.)
NOFF Each line feed in the file is translated to '177&'21
FF which causes single spacing with no form-feed between
pages.
NOWARN Suppress "spooling done" typeout after listing.
WARN
ASK Before making the spool command, SPOOL will type the
file name and wait for the user to answer with "Y" to
spool the file. (This is useful with *.* terms).
HOLD=hhmm The listing will be held in the queue until the time
specified by hh hours, mm minutes. (24-hour time is
assumed.) If hhmm is prior to the current time, hhmm
tomorrow is assumed. HOLD is not allowed with XSPOOL.
MODE=n Open the file in mode n (n is octal).
File specifications may be read from an auxiliary file by including in the
command line the name of the auxiliary file preceded by @. This file may
include file names and switches.
SPOOL: Delayed Listing
Usually requests for spooled listings will be processed as rapidly as
possible. Under some circumstances this may not be desired. For example, a
long listing impacts the normal operation of the system by making the line
printer unavailable during its duration. The spooler allows users to delay
such listings until a time of minimum loading (e.g., 0500) when the
unavailability of the line printer is less likely to interfere with other
users.
If the construction /HOLD=hhmm appears in a command line then hhmm is
interpreted as the (24 hour) time of day when the listing should actually be
sent to the line printer. In the example below, 1730 will be interpreted as
5:30 PM.
Example:
SPOOL SYSTEM.LST[S,SYS]/HOLD=1730
If the time specified is smaller than the current time, it is interpreted to
mean, "list the file tomorrow at the time specified." That is, if at 10PM
you give the command:
SPOOL BAZ.FAI/HOLD=400
then the listing will occur in six hours.
Delayed listings and the /HOLD switch are not allowed with spooling on the
XGP (XSPOOL).
SPOOL: Page Selection
You may follow a file name by a list of ranges of pages that you want
listed. The list must be parenthesized. For example:
SPOOL FOO.SAI (1,7,5:8)
will cause page 1, page 7, and pages 5 through 8 inclusive to be listed.
Page ranges are never sticky.
In octal dump mode, this page range list is used to specify a word range to
list.
SPOOL: Multiple Copies of a File
The REPEAT switch (/REPEAT=n) is accepted by SPOOL. The effect is to
interpret n as a decimal number and to list that many copies of the file.
Multiple copies are spooled as usual, except that the two pages of heading
that normally precede a file (except if the /NOTITLE switch is used) are
suppressed on the second and subsequent copies of the file.
Multiple copies and the /REPEAT switch are not allowed with spooling on the
XGP (XSPOOL).
SPOOL: XSPOOL Special Features
The XSPOOL command is quite similar to the SPOOL command. The XGP has
greater flexibility than the line printer, so more parameters can be
specified in the XSPOOL command.
The following switches are legal only in the XSPOOL command:
FONT#n=f n is a number from 0 to 15 decimal. f is a file name. The
XGP spooler will use the font named f as font n when
spooling. If #n is omitted, n=0 is assumed. Up to 16 font
select switches are permitted. The defaults for filename,
extension, and PPN are FIX25.FNT[XGP,SYS].
LMAR=n Set left margin to column n. Columns in the XGP are
numbered from 0 to 1699 (approximately). The left margin is
the column which the carriage return character selects.
RMAR=n Set right margin to column n. If the XGP is going to write
a character that exceeds this margin, a new line will be
started.
TMAR=n Set the number of blank scan lines between the top edge of
the page and the first line of text.
BMAR=n Set the number of blank scan lines between the bottom of the
text and the bottom edge of the paper. (The monitor
interprets BMAR=0 to mean no paper cutting.)
PMAR=n Set the number of scan lines in the page body. Text is
written inside this area. (The monitor interprets PMAR=0 to
mean that the end of a page body is signalled only by a form
feed in the file, for variable-length pages. This is true
only if BMAR≠0.)
XGP The first page of the file is taken as font and margin
commands, preceded by slashes as in the command line. Only
the special XGP spooler switches (the ones in this table)
are allowed. Carriage returns are ignored. If the first
page of the file is an E directory, the second page is used
for the commands. The command page is not printed. A file
extension of .XGP also invokes this feature.
NOXGP Turns off /XGP.
XLINE=n Set the minimum interline spacing to n scan lines.
NTNODE=n Set the number of text nodes allocated by the monitor (see
below).
NVNODE=n Set the number of vector nodes allocated.
Text nodes and vector nodes are units of core storage allocation used by the
monitor's XGP service routines. Generally, you need not worry about them,
but if you have trouble printing a complex document the allocation control
switches may be able to help you. See a system wizard to find out.
The /XGP switch, when present, turns off the usual default assumptions about
other switches; in particular, /HEADING is not assumed unless it is
explicitly used. Spooling a file with extension .XGP implies a default of
/NONUMBER as well as /XGP.
More peculiarities:
If any FONT select switch specifies some font number other than 0, no
/HEADING switch will be assumed unless it is explicit.
Page headings will occur in font#0. Whatever font was in effect before the
heading line will be reinvoked before any further processing. The title
page, if present, will be made in font#0.
SPOOL: QSPOOL Command
The QSPOOL command starts the SPOOL program in a special way. QSPOOL reads
the directory of [SPL,SYS] and interprets the contents of the SPX and XSP
(spooler command) files. Essentially, it displays the queue of files to be
printed.
The commands QSPOOL/LPT and QSPOOL/XGP will list spool requests only for the
indicated device.
The queue is based on a priority scheme. The priority of a spool request is
determined by:
(time in minutes since spool request, +1) / (file size in records)
Requests are processed in the order of decreasing priority.
The QSPOOL command may be given without logging in.
SPOOL: UNSPOOL Command
UNSPOOL is a monitor level command that invokes the program SPOOL. If you
run UNSPOOL, it will display all the spooler requests that you (your PPN)
have requested, and it will allow you to delete any of them. If you delete
a request which hasn't been seen by the spooler, then nothing special
happens since the spooler is not yet aware of the command, so it won't be
missed. If it happens that the spooler is already processing your commands,
then the listing in progress will be purged.
If you give the command REENTER after UNSPOOL exits, then not only are you
allowed to purge any command file that is either in progress or pending but
you also can change the spooler behavior in the following ways:
1. You can cause the present listing to be purged.
2. You can cause the present listing to be started over.
3. You can cause the spooler to hold the queue and release the LPT or XGP
immediately before starting the next file.
4. You can release the queue from the state induced by holding it.
The commands UNSPOOL/LPT and UNSPOOL/XGP will list and delete spool requests
only for the indicated device.
APPENDIX 4--MAIL
The information in this appendix is taken from the files MAIL.BH[UP,DOC] and
RCV.BH[UP,DOC], the manuals for the MAIL and RCV programs. See also
E.ALS[UP,DOC] on the use of E in reading mail files and sending messages.
MAIL: The MAIL program
The MAIL program is used to send messages to users and sometimes to
arbitrary disk files for special purposes. The program is invoked by one of
several monitor commands, depending on the function desired:
MAIL send a message to one or more message files
SEND send a message to the terminals of one or more users
GRIPE send a message complaining about a system problem
REMIND schedule a message to be sent at some later time
PLAN create a file describing how to find you when not logged in
EVENT send a message to all users about an event on a given date
BATCH schedule the execution of a command string at some later time
LATER schedule the execution of a given program at some later time
RETRY send any messages which were queued by earlier failing operations
The commands MAIL, SEND, and GRIPE may be given when not logged in, so that
people who are not authorized users of our system can use them to
communicate with us. A user who is not logged in will be asked for his
name, which will be included in the header of the message. However, users
who are not logged in may not use wildcard (send to all users) or ARPA
network destinations.
The commands MAIL, SEND, and REMIND require a list of destinations
(recipients of the message). All of the commands except LATER and RETRY
require some message text and also can be modified by the use of certain
optional switches, either applied globally (all destinations) or just to a
particular destination. The commands REMIND, PLAN, EVENT, and BATCH all
require a date and/or time which can be included by itself or in a global
/DATE or /TIME switch. (Any date given must appear before any time given,
whether in switches or not. See the section below on dates and times.)
LATER takes up to four specific arguments which describe the program to be
run and when it is to be run; these will be described on page 99.
RETRY takes no arguments at all; it merely looks for queued mail originating
from the current user and tries once again to send each such message (this
will be done automatically if RETRY is not used).
The normal command syntax includes all necessary information on one or more
lines without prompting. There is an alternative format, called
hand-holding mode, in which each piece of information required is prompted
for separately. Hand-holding mode is more verbose and time-consuming to
use, but may be less confusing to new users. It is invoked by typing just
the command of interest without any arguments, and will be described in a
separate section. What follows here assumes that the normal syntax is being
used.
Before explaining the complete range of command options, here are a few
sample commands:
SEND BH Want to have dinner?
This is a very simple example of a command with one destination and no
option switches. It types the message "Want to have dinner?" on BH's
terminal if he is logged in, along with a header indicating who sent the
message. If BH is not logged in, MAIL asks if the message should be mailed
instead of sent.
MAIL/DIST @NL Language group meeting Tuesday at 3pm.
This command mails the message "Language group ..." to the mail files of the
users listed in the file NL.DIS or NL or NL.DIS[P,DOC] (the [P,DOC] file
directory contains lists of users by project group). The first file in that
list which exists is used. The message will include the standard header
indicating who sent the message and when, and also (because of the /DIST
switch) a line indicating to whom the message is being sent.
REMIND/DATE=10-*-* . Rent due tomorrow
This command reminds the user who isssued the command (because of the "."
destination meaning self) to pay the rent on the tenth day of each month of
every year. The reminder is both mailed and sent each time, and expires
after 50 times. (These are default conditions modifiable by switches.)
MAIL: Command Format
The command format for all MAIL commands except LATER and RETRY is shown
below. The formats for the LATER and RETRY commands are explained in the
sections on those commands beginning on page 98.
<command & global switches> <destinations & local switches> <message>
The <destinations & local switches> part only applies to the MAIL, SEND, and
REMIND command. Destinations and destination lists will be described in the
next section.
The message text can be provided in any of three ways: (1) a one-line
message can be included after the destinations on the command line and ended
with <CR>; (2) if no message specification is given on the command line (or
the same line as the last destination for a multi-line command), MAIL asks
for a message to be entered from the terminal, ending with the end-of-file
character (<CONTROL><META><LF> from a Stanford display terminal or Imlac,
<control>Z otherwise); (3) if the notation
@file.ext[prj,prg]
is used on the command line after the last destination, the message text is
taken from the specified file. If no extension is typed, the extension .TXT
is tried first, and then a blank extension. To force the use of a filename
with no extension, type the dot but no extension, for example:
@file.[prj,prg]
The file may contain an E directory or SOS line numbers, which will not be
included in the message.
If something not starting with "@" follows the destination list on the
command line, it is taken as the message text. This makes single-line
messages more convenient to enter. If you start to enter a single-line
message, and decide you need more than one line after all, end the command
line with <LF> instead of <CR> and you will be allowed to continue the
message on later lines.
When entering a message, the usual line editing facilities are available.
In addition, if the <bs> key is typed when the input line is empty (i.e., at
the beginning of a new line), the last line typed is loaded into the line
editor (Stanford displays) or input buffer (non-displays) and the cursor is
positioned at the end of that line. The text of that line is deleted from
the accumulated message. The effect is that a carriage return can be
deleted by <bs> like an ordinary character. It is possible to back up
another line by doing another <bs> after clearing the newly reloaded line.
This procedure destroys the lines that followed the one to which you back
up, and the backup is only possible for a small (about 30) number of lines.
When entering a message from a Stanford display terminal, a better facility
is available for correcting errors in the command or in the message more
than one line before the current line. Typing <CONTROL><META>E at the end
of a line of message text will cause a file called MAIL.TXT to be written on
your login disk area (not alias) with the command, switches, and destination
list that you gave on page 1, and the message text up to the
<CONTROL><META>E on page 2. Then E is run automatically on this file to
allow you to edit the text and/or command. E will start up pointing at page
2 of the file, but you can modify the command or destinations by editing
page 1 (there will be no directory page). When you are finished editing the
message and command, type to E the command <CONTROL>XRUN to restart the MAIL
program automatically and send the message as edited. The MAIL.TXT file is
automatically deleted after the message is sent. Note: if you accidentally
or purposefully exit from E without saying <CONTROL>XRUN, you can still send
the message from MAIL.TXT by simply editing that file with E (using /R if
you don't need to further edit the message or command) and then giving E the
command <CONTROL>XRSYS MAIL, which will run MAIL to send the message and
delete the file.
The character <altmode> cannot appear in a message (because it is a line
editor activator and would confuse some mail-reading programs). If an
altmode is seen in the message text as input, it is changed into a dollar
sign ($). Also, the character <formfeed> cannot appear in a message
(because it would mess up the E-format of mail files). If a formfeed is
seen in the message text as input, it is changed into an exclamation point
(!).
If the /SUBJECT switch is used to include a subject line in the message
header, the subject is taken from the first text line entered: for a file,
the first line of the file is the subject; what would otherwise be a
single-line message is taken as the subject line for a multi-line message to
follow. If no message is provided on the command line, you are prompted for
a subject line and then for the message text.
MAIL: Destinations and Destination Lists
The commands MAIL, SEND, and REMIND require one or more recipients, or
destinations, specified in a list called the destination list. The
destinations should be separated by commas. The list may extend over more
than one line if the lines before the last end with comma. (Any characters
from a semicolon to the following linefeed are ignored.) The following
types of destinations may be used:
prg programmer name of local user
. yourself
* notice for all users
name real name (or leading substring) of local user
name % host user at another ARPA network host
% host sticky ARPA network host to be used for following names
#fil.ext[pj,pg] (MAIL only) arbitrary file to receive message
TTYn (SEND only) terminal to receive message
n (SEND only) job number to receive message
@fil.ext[pj,pg] file containing destination list
ARPA* (SEND only) all users logged in via ARPA network
The form "prg" in the above list must be one to three letters and digits,
the first of which is a letter (upper and lower case letters are
equivalent). The forms "name" in the above list must consist of either any
number of letters, digits, and hyphens, starting with a letter, or of
arbitrary characters enclosed in quotation marks ("...") or downarrows
(↓...↓). In the SEND command, the TTYn form may optionally be followed by a
colon.
ARPA network hosts are specified by host name (1 to 12 letters, digits, and
hyphens starting with a letter) or by decimal host number. If the host name
is used it can be abbreviated by enough characters to identify it uniquely.
Many hosts have short nicknames recognized by the network programs at
Stanford. Mail will only be sent to a host specified by name if the host is
listed in our host table as a server (that is, a host which accepts incoming
connections).
A host may be specified for a single destination, using the "name%host"
notation, or a sticky host may be specified by just "%host". A sticky host
will apply (until another sticky host is specified) to all following
destinations that start with a letter or a quote character and which do not
have a host specification themselves. A host name of SU-AI (or SAIL) will
override a sticky host but will not actually send the message via the ARPA
network.
There is no ARPA network standard protocol for implementing the SEND command
to a remote host. However, a private protocol for this purpose has been
implemented for use between SAIL and the ITS systems at MIT. The MAIL
program will attempt to use this protocol to any host, but it isn't going to
work except to an ITS. In particular, the designers of TENEX object to SEND
on principle, because they don't know display terminals have been invented
yet.
More information about ARPA network mail will be given in a later section.
In the #file construction, if no extension is given the default extension
of .MSG is used. To mail to a file with no extension, you must type the
filename in the form "#file." with no extension after the dot.
In the @file construction, if no extension is given the default extension
of .DIS (distribution list) is tried first. If that file does not exist,
then the null extension is tried next (both of these on your current alias
disk area unless you gave an explicit PPN). If neither of these exists,
then the extension and disk area .DIS[P,DOC] is tried (unless you gave an
explicit PPN). The [P,DOC] directory contains several distribution lists
derived from the laboratory personnel directory. For example,
SEND @VB Time for volleyball!
will send that message to all known volleyball players as listed in the file
VB.DIS[P,DOC] (see LES to be added to the list). Distribution list files
may contain E directories or SOS line numbers. Only the first page (second
page if in E format) is read. Everything on that page will be interpreted
as destinations even if not properly separated by commas. (The semicolon
format for comments will work.)
For the MAIL command, if there is a file called OUTGO.MSG in your login (not
alias) directory, it is automatically included as a destination for the
message. This provides a simple and automatic method for saving a copy of
each message you MAIL to anyone.
MAIL cannot be sent to local users who do not have file directories.
However, if you must MAIL a message to a programmer name that has no file
directories, you can do
MAIL #" prg".MSG[2,2]
to mail explicitly to the message file of programmer name "prg" (prg should
be right-justified in six quoted spaces).
The check for syntax validity and existence of local users is made as soon
as the destination list is read. If some but not all of the destinations
are valid, MAIL asks whether or not it should proceed using the valid ones.
If you want to correct a mistake in a destination (or in a switch or in some
part of the message already typed) before sending the message, answer no to
the query and then use the monitor command REENTER, as explained on page
101.
For the SEND command with a multi-line message (so the destination list is
read before the message has been entered), a warning message is given if any
programmer name recipient is not logged in. This warning does not require
reconfirmation before the command is executed.
For people who want to send mail to people listed in a file designed for use
by SNDMSG at a TENEX site, which requires a different syntax, the /ARPA
switch can be used to cause distribution list files to be parsed
differently, including the use of "@" to indicate a network host name.
Obviously nesting of distribution list files is not possible within such a
file. See the description of the /ARPA switch below for more details.
MAIL: Message Formats
Messages are usually sent preceded with a special header which tells who
sent the message and when it was sent. This header takes three forms: one
for messages being typed out on terminals (SEND command), another for local
(SU-AI) mail files, and a third for messages sent out over the ARPA network.
The header may be followed by an optional distribution list (explained
below). After the distribution list (if present), the message text is sent
followed by a blank line (unless the message already ends with a blank
line). SEND leaves off the extra blank line when typing the message on
terminals.
The header used for local files starts with a partial sign to facilitate
detection of the beginning of each message by various message editing
programs. To ensure that trouble is not caused when a partial sign actually
occurs in a message, any partial sign that occurs as the first character in
any line of a message is indented by one space, whether or not the message
is going only to local files.
Here are examples of the first two header formats:
;; Message from ME at TTY46 0032 Records
∂23-DEC-75 0032 ME Records
The SEND header (first above) contains the sender's programmer name,
terminal number, the 24-hour time of sending, and then the subject (if any).
The local file header (second above) contains a partial sign followed by the
date and the time of day, then the sender's programmer name and the subject
(if any). The local file header can be suppressed by use of the /-HEADER
switch (see the section on switches below). However, this switch is not
recommended for general use when mailing to users' message files since it
causes the message to be sent without any identification about who sent it
or when it was sent; in fact, it effectively causes the message to be
appended to some other message in the file. This switch is useful, however,
when mailing text to a special file which is simply to contain message text.
In both the SEND header and the local file header, if the sender was logged
in via the ARPA network at the time of sending, the phrase "via host" will
follow the sender's programmer name, where "host" is the name of the host
from which the sender was connected to Stanford. The name preceding the
"via ..." is, nevertheless, a Stanford programmer name.
If the sender is not logged in, his programmer name is 100 and he is asked
to supply his real name, which is included in the header.
If the message was sent to all users by a SEND * command, a "to *" phrase is
added to the header line to make it look like this:
;;Message to * from ME at TTY46 0032 Records
Finally, if the message if being sent as a reminder (see the REMIND
command), then the programmer name in the header will be followed by an
asterisk (*) as in these examples:
;; Message from ME* at TTY46 0032 Records
∂23-DEC-75 0032 ME* Records
Now, here is a sample header for messages sent out over the ARPA network:
Date: 23 DEC 1975 0032-PST
From: Martin Frost (ME @ SU-AI)
Subject: Records
To: rmf @ MIT-ML
The network header contains the date and time, the sender's real name as
well as his programmer name, the subject (if any), and the distribution list
(list of recipients of the message, starting "To:"). This is more or less
the standard ARPA network format, except for the "From:" line, which
contains the sender's real name as well as his network mailbox. The MSG
program on TENEX, which uses the "From:" line to provide an automatic reply
feature, knows about this format and handles it correctly. There is a new
mail header standard in the works, which calls for lots of useless garbage
like a supposedly-guaranteed-unique message ID line to help the bureaucrats
or the CIA or someone like that keep track of the message; we don't supply
that.
The distribution list can be omitted from network mail by use of the /NODIST
switch (see the section on switches below) and can be included in local
messages (MAIL or SEND) by use of the /DIST switch. Note that /NODIST
applies only to network messages and /DIST only to local messages. For
messages MAILed to two or more destinations, a global /DIST switch is
assumed unless a global /-DIST switch is given. The distribution list may
use more than one line if lots of destinations were specified. Also, some
destinations may be listed on lines beginning "CC:" instead of "To:"; such
destinations are considered secondary recipients of the message and are
specified by use of the /CC switch.
Normally, if a distribution list file was used to specify the recipients of
the message, a distribution list included with the message will contain only
the name of that file, not the actual recipients listed in it, to avoid very
long distribution lists. The /LIST switch (see the section on switches
below) will list in the message the individual recipients named in the file.
MAIL: Message File Formats
When mail is sent to a file which already exists, the beginning of the file
is read to see if it contains an E directory. If so, the message is added
at the end of the file preceded by a formfeed so that the message will be on
a new page. The directory is not updated to reflect this new page, but the
formfeed will be at a record boundary, so that when the file is next edited
with E, the directory can be updated without reformatting the file. If the
file does not already contain an E directory, the message is added at the
beginning of the file without any formfeed. In this case, record boundaries
are not necessarily preserved. The /APPEND switch will cause the message to
be added at the end of the file along with a formfeed as if there had been a
directory. The /-HEADER switch which omits the local mail header also omits
the formfeed which would have just preceded the header in E format files.
When a message is sent to a file which did not formerly exist, the file is
created with an initial E directory so that subsequent messages will be
added at the end of the file. The switch /-E can be used to omit this
directory normally inserted for a new file. However, this switch and its
inverse /E will be ignored for user message files (*.MSG[2,2]) and for user
plan files (*.PLN[2,2]). New user message files always get an E directory;
user plan files never do.
MAIL: Command Switches
Various switches can be specified in the command line to modify the
operation of the MAIL program. Some apply only globally; these may appear
either just after the command name or after an individual destination.
Other switches can be applied either globally (by appearing just after the
command name) or to a particular destination (by appearing just after that
destination). A switch applied to a particular destination overrides a
global switch. Switches may appear at the beginning of a distribution list
file, in which case they apply globally to all destinations within that
file. Switches appearing with the @file destination format override
file-global switches at the beginning of the file.
A switch name may be abbreviated by enough characters to identify the switch
uniquely. All switches are available in positive and negative senses (e.g.,
/LIST and /-LIST) except for the following switches which are not available
in the negative sense: /CC, /DATE, /TIME, /COUNT, and /ARPA. The default
value for most switches with a negative sense is the negative sense; the
/HEADER and /E switches are the primary exceptions, but in addition the
/SUBJECT and /DIST switches can be implied by the command.
Here are the available switches:
Switch Meaning of positive switch sense
/NOMAIL (SEND only) Do not mail the message to a destination programmer
name if the user is not logged in. Suppresses the question
about such mailing.
/YESMAIL (SEND only) Do mail the message to a destination programmer
name if the user is not logged in. Suppresses the question
about such mailing.
/MAIL (SEND only) Mail the message to a destination programmer name
as well as sending even if the user is logged in. Suppresses
the question about mailing of SEND messages which would be
asked if a destination programmer name were not logged in.
(Note that this switch has a different meaning for the REMIND
command--see below.)
/MAIL (REMIND only) Do not send the reminder to the destination
programmer name when the time comes, only mail it. Normally
reminders are both mailed and sent. (Note that this switch has
a different meaning for the SEND command--see above.)
/SEND (REMIND only) Do not mail the reminder to the destination
programmer name when the time comes, only send it. Normally
reminders are both mailed and sent.
/DIST Include the list of destinations in the text of the message for
local recipients (see message format in a previous section). A
global /DIST is implied by the MAIL command when two or more
destinations are given unless a global /-DIST is specified.
Compare /NODIST below.
/NODIST Do not include the list of destinations in the text of the
message for ARPA net recipients (see message format in a
previous section). This switch is not the inverse of /DIST!
/NO This is equivalent to /NOMAIL for the SEND command and to
/NODIST for the MAIL command, so that /N can be used to
abbreviate the appropriate switch.
/CC List this destination and all after it as secondary (CC)
recipients (see message format in a previous section). This
switch implies /DIST unless a global /-DIST is given.
/SUBJECT Include a subject line in the message. The effect of this
switch is always global. /SUBJECT is implied by the MAIL and
GRIPE commands unless some message text or the name of an
indirect message file or the /-SUBJECT switch appears on the
command line. However, typing just <CR> to the "Subject:"
prompt will omit the subject from the message. Subjects are
useful in local mail files because the first line of each page
(usually the header line of a message) appears on the directory
page in an E-format file, and for local files the subject is
included in the header line and thus in the directory.
/WHERE (MAIL and SEND only) Type the WHO line of each job that is
logged in under a programmer name included in the destinations.
/QUEUE Queue ARPA network mail for later delivery without first trying
to send it immediately. This can be especially useful if you
are sending a message to several different hosts and do not
want to wait for completion of the mail to each one. The first
attempt (by the remind phantom) to send such manually queued
mail will happen right away.
/APPEND (MAIL only) Put the message at the end of the file instead of
the beginning even if it has no directory. A formfeed will
precede the message (unless /-HEADER was given).
/LIST List the destinations specified within a distribution list file
as well as the file itself in any distribution list included
with the message. For REMIND, /LIST implies /EXPAND.
/HEADER Include the header line in messages mailed to local files. See
message formats in a previous section. Unlike most switches,
the default for this switch is on.
/E Include an E directory if creating a new message file. The
default for this switch, like that for /HEADER, is on. See the
section above on message file formats.
/DATE (REMIND, PLAN, EVENT, and BATCH only) This switch is used in
the form /DATE=<date> and sets either (1) the delivery date for
a reminder, (2) the expiration date for a plan, (3) the
occurrence date of an event, or (4) the execution date for a
batched command sequence. Reminders, events, and batch
executions can also be given a time (see /TIME switch below),
but any date must be specified before any time is. For the
<date> formats accepted, see the section below on dates and
times.
/TIME (REMIND, EVENT, and BATCH only) This switch is used in the form
/TIME=<time> and sets either (1) the delivery time for a
reminder, (2) the occurrence time of an event, or (3) the
execution time for a batched command sequence. Reminders and
batched executions can also be given a date, and events must be
given a date; see the /DATE switch above. If /DATE and /TIME
are both used, /DATE must come first. For the <time> formats
accepted, see the section below on dates and times.
/COUNT (REMIND and BATCH only) This switch is used in the form
/COUNT=<number> and sets the expiration count for a reminder or
a batched command sequence. This count is only relevant if the
command contains a wildcard date. See the section below on
dates and times.
/EXPAND (REMIND only) This switch applies only to destinations of the
form @file. It causes such a distribution list file to be
expanded now instead of when the reminder is actually sent.
This means that there will actually be a separately stored
reminder for each destination now contained in the distribution
list file rather than one reminder that actually references the
file when the reminder is being sent. This switch applies only
to the file itself (not to any @file destinations within the
file), unless the switch is given globally or file-globally, in
which case it propagates downward. /-EXPAND implies /-LIST.
/ARPA This switch may only be used with a destination of the form
@file or as a file-global switch in such a distribution list
file. It changes the syntax of the destination processor so
that the character "@" precedes an ARPA network host name
instead of a distribution list file name, and all SIXBIT
characters except space, comma, colon, quote ("), and at-sign
(@) are allowed in names without using quotes. A name ending
with a colon (distribution list name for SNDMSG) is ignored.
The switch is intended for files from systems like TENEX with
less sophisticated mail programs.
MAIL: Dates and Times
The commands REMIND, PLAN, EVENT, BATCH, and LATER all accept dates and
(except for PLAN) times. The date and/or time given for one of these
commands specifies when a particular thing should happen: REMIND causes a
reminder message to be mailed and or sent to one or more users at a given
instant; PLAN creates a plan file for the user giving the command and
specifies the date on which the plan file should automatically be deleted;
EVENT puts out a system message announcing an event of general interest
which will take place at the specified time and date; BATCH causes a
sequence of commands to be executed at the specified time and date; and
LATER causes a given program to be run at the specified time and date. For
all of these commands except LATER, there are two ways to provide the date
and time information.
The less confusing manner of giving dates and times is to use one or both of
the switches /DATE=date and /TIME=time after the command name (if both are
used, /DATE must precede /TIME). These switches may only occur immediately
after the command name. (Switches are not permitted with the LATER command,
which takes a fixed one-line format that will be explained on page 99.
Dates and times in the LATER command must use the non-switch format.) If
neither switch is used in a command that needs a date or time, then a date
and/or a time will be expected after the destination list (which is only
present for REMIND) and before the message text.
Dates may be given in any of the following formats (whether in the switch
form or not):
4/28/75 28-APR-75 APR 28, 75
4/28/1975 28-APR-1975 APR 28, 1975
4/28 28-APR APR 28
4/28/* 28-APR-* APR 28, *
*/28/* 28-*-* +3
WEDNESDAY WED W
WEDNESDAY* WED* W*
(Visitors from Europe please note that the slash format is month/day/year,
not day/month/year!)
If a specific month and day are given but no year, the current year will be
used unless the date has already passed, in which case next year is used.
Today's date is considered as already having passed except in the EVENT
command. Months and days of the week may be indicated by as many letters as
are required to identify the name uniquely. For days of the week, the
one-letter abbreviations M T W R F S D are provided. The format "+3" is
used to indicate a date of 3 days from today. The asterisks represent
wildcard dates which are explained in the section below on wildcard dates
and expiration counts.
Times may be given in any of the following formats (whether in the switch
form or not):
1423 223pm 223p 02:23p
14:23 2:23PM 2:23P 02:23PM
0223 223am 223a 223
02:23 2:23AM 2:23A 2:23
2 2AM 2PM 14
+2:23 +2: +:23 +14:
2* 2AM* 2:23* 2A*
If an explicit AM or PM is given, it must follow the time number with no
intervening spaces! This requirement is necessary to distinguish the AM or
PM from the possible beginning of the message text or of a destination name.
Times with three or four digits and no colon normally imply AM if less than
1200 and PM otherwise (the allowable range is 0000-2359); it is possible to
specify AM or PM explicitly, however, if the number is in the range
0100-1259. If no explicit date is given in the command, times with one or
two digits, or with a colon, and in the 1:00-12:59 range without an explicit
AM or PM, will represent the nearest such 12-hour time which has not yet
passed (which might be this morning, this afternoon, or tomorrow morning).
If a date is given as well as a time, times in the 0:00-11:59 range will
normally be considered AM and 12:00-23:59 will be considered PM as for the
four-digit times. Note: A time of 12:00am is midnight, and 12:00pm is noon;
the mnemonic is that 12:00 is a minute before 12:01.
If a time is given but no date, today's date is used unless the given time
has already passed, in which case tomorrow's date is used. If a date is
given but no time, the time used is midnight at the beginning of the given
date.
The relative time format (e.g., +2:23) specifies the length of time before
the command is to be executed (in this example, 2 hours and 23 minutes);
this format may only be used if no date is given and, except in the switch
form, must contain a colon so that +2 days can be distinguished from +2:
hours.
A time followed by an asterisk represents the given time and a wildcard
date; see the section below on wildcard dates and expiration counts.
MAIL: Wildcard Dates and Expiration Counts
As demonstrated in the example dates and times above, an asterisk (*) can be
used as a wildcard in place of the month or year, or following a day of the
week or a time. Such dates and times cause the command to be executed
repeatedly until exhaustion of the expiration count, which is explained
below. (Wildcard dates are not permitted in the PLAN and EVENT commands.)
An asterisk used in place of the month will cause the command to be repeated
once every month, and an asterisk used in place of the year will cause
yearly repetition; asterisks used for both the month and the year will cause
monthly repetition every year on the given day of the month. An asterisk
following a day of the week will cause weekly repetition on the given day of
the week. An asterisk following a time will cause daily repetition at the
given time; in this format no date can be given.
If * is used for the month but not for the year, the command will expire at
the end of the specfied year, or the current calendar year if none is
specified.
When a wildcard date is used, the command is repeated until exhaustion of
the expiration count. The expiration count can be set explicitly by using
the /COUNT=n switch (global only) or by following a non-switch-format
date/time with #n, where n is a decimal number. If no expiration count is
given, the default of 50 is used. A count of 0 or ∞ will prevent the
command from expiring unless it is explicitly cancelled by the user.
MAIL: Mail to Other ARPA Network Hosts
Mail can be sent to users of other computer systems connected to the ARPA
network. To send network mail, you must tell the MAIL program the name of
the recipient, as understood by the other host, and the name of the host.
Each host has an official name, a string of letters, digits, and hyphens.
For example, our host name is SU-AI. Hosts may also have unofficial
nicknames; we assign a short name to every host on the network. Either the
official name or the nickname can be used to identify a host; you need only
type enough characters to identify the host uniquely. For example, we have
the nickname SAIL which can (as of this writing) be abbreviated SA. Each
host also has a number; you can type a decimal host number instead of a
name. The format for a network destination is
name % host
where "name" is the recipient's name at the host and "host" is the host name
or number. The recipient name can contain upper and lower case letters,
digits, and hyphens; if any other characters are required the name must be
enclosed in quotation marks ("...") or downarrows (↓...↓). The name must
also be quoted if it does not start with a letter. Some hosts may consider
the case of letters significant in their user names.
To send a message to several users at the same host, it is possible to
specify a sticky host with a pseudo-destination of the form
% host
Thus, the command
MAIL FEINLER%BBNB,%AI KLH,TK,MINSKY,BH%SAIL,PAPERT
will mail the message to these recipients:
FEINLER at host BBN-TENEXB
KLH at host MIT-AI
TK at host MIT-AI
MINSKY at host MIT-AI
BH at host SU-AI
PAPERT at host MIT-AI
Of course, mail to SU-AI is not actually sent via the ARPA network! The
sticky host specifier "%AI" was not followed by a comma in the example
above; the comma is optional following sticky hosts since the use of a
sticky host implies that at least one destination will follow.
Not all network hosts are servers; that is, some hosts can originate network
connections but do not accept connections originated from another host.
Mail can only be sent to servers, and the MAIL program will refuse to try to
mail to a host which is not known to be a server. We are supposed to be
notified promptly of host status changes, so our host tables should be up to
date most of the time, but if MAIL does not recognize a host you think it
should, consult a system programmer. MAIL will always accept hosts
specified by number.
Network mail may not be delivered successfully on the first try, because the
other host or the network communications equipment may be down. Therefore,
the result of a network mail attempt is reported with one of three messages:
USER at HOST -- ok
USER at HOST -- refused
USER at HOST -- queued
The first message means that the mail was sent and acknowledged by the other
host. The second means that the network connection was established but the
other host rejected the mail, for example, because it did not recognize the
recipient as a user of that system. Usually the other host will send back a
message explaining why the mail was refused, which the MAIL program types
out. The third message means that the network connection could not be made
or was interrupted. The message is queued like a reminder and is
automatically retried at three-hour intervals for three days. (The first
repeat attempt is made 15 minutes after the original failure.) You can use
the RETRY command (see the section on the RETRY command) to retry your
queued mail manually. You will be notified via MAIL and SEND of the
eventual disposition of queued mail; the possibilities are
Mail to USER at HOST -- ok
Mail to USER at HOST -- refused
Mail to USER at HOST -- expired
The last of these means that the three-day limit ran out without a
successful connection.
When a message which was typed in from the terminal (not read from a file)
is queued, the message text is also written in a file named FAILED.TXT in
your login (not alias) directory. This file is not necessary for the
operation of the queuing system, but can be used if you want to redirect the
message. (For example, you might know that the recipient is also accessible
through another host.)
Also, you can selectively delete queued mail requests by using the monitor
command CANCEL (see page 104).
The header format for network mail is different from that used for local
mail. The section of this document on message formats explains the network
header. In particular, the distribution list (list of recipients of the
message) is by default included in network mail but not local mail. The
/NODIST switch will eliminate the list from network mail.
If you often communicate with users at other hosts, you may want to send
mail to a group of people listed in a file which was prepared elsewhere. To
make this easier, the switch /ARPA applied to a distribution-file
destination causes the file to be scanned using the syntax of the SNDMSG
program on TENEX systems. Specifically:
The character "@" is used instead of "%" to indicate network host
names.
Any character may be used in a recipient name except space, carriage
return, linefeed, tab, quote, colon, comma, and at-sign without
quoting the name. Note in particular that semicolon is a valid
recipient name character.
A recipient name ending with colon (distribution list name) is
ignored completely.
If you are sending mail to several users at other hosts, it can be very
time-consuming to wait for all the network connections to be made. The
/QUEUE switch can be used either globally or for individual recipients to
tell MAIL to queue the message immediately, without trying to send it. In
this case, the first attempt will be made essentially immediately instead of
15 minutes later, but the attempt will be asynchronous with your own job.
Note: during busy hours there may be no job slot available for the remind
phantom, in which case the mail will not be sent immediately if /QUEUE is
used.
There is no ARPA network standard protocol for implementing the SEND command
to a remote host. However, a private protocol for this purpose has been
implemented for use between SAIL and the ITS systems at MIT. The MAIL
program will attempt to use this protocol to any host, but it isn't going to
work except to an ITS.
MAIL: The MAIL Command
The MAIL command is used to send a message to one or more users, but can
also be used to write a message in an arbitrary disk file. This command
takes a list of destinations which determines where the message is to go.
See the section above on destination lists.
Mail sent to a user will be seen when he next reads his message file, but a
note saying that mail has arrived is typed out on the terminal of each
destination user who is logged in at the time the mail is delivered. You
can edit your message file with E by giving the monitor command ETV ∂ (or
ETV \MAIL).
A notice can be mailed to the system message file NOTICE.TXT[2,2] via the
MAIL * command. Users see the system messages when they log in. Since a
system message may only be relevant for a short time, an expiration date can
be specified for such a notice. To do this, use the /DATE=<date> switch;
the message will be deleted at the midnight that begins the given date, and
therefore the notice will last be seen on the previous day. The date must
not be wild; that is, it cannot contain the asterisk (*) wildcard specifier.
System messages specified without an expiration date will be deleted after
14 days. (The expiration facility is implemented by including the
expiration date as its octal DAYCNT number in the message header. A program
run every midnight deletes expired notices.) See also the EVENT command for
putting notices about events in the system message file.
Sometimes mail cannot be delivered to a given user right away. In this
case, the mail system queues the message for later delivery. Attempts to
deliver queued local mail will be made every ten minutes for four hours,
with the first such attempt occurring about 2 minutes after the original
failure. Queued network mail is retried every 3 hours for three days,
starting 15 minutes after the original failure. When the message is finally
delivered, or after 24 delivery failures, the sender is notified via the
mail system of the eventual outcome of his mail attempt. Mail will have to
be queued if the destination user is located at another ARPA network host
and that host is down, or if the destination user is at Stanford and is
currently reading his mail file. Queued mail is handled automatically by
the mail system and the sender need never take any further action. However,
the sender can unqueue any of his outgoing messages that have been queued;
the monitor command CANCEL allows selective deletion of these queued mail
requests (see page 104). Also, the sender can cause MAIL to retry sending
his outgoing queued mail immediately by giving the RETRY command (see page
98).
MAIL: The SEND Command
The SEND command is used to have a message typed out on one or more
terminals. This is usually for the purpose of sending a brief message to
the terminals of selected users so that they will see it immediately. The
message is preceded by a header telling who sent the message and when; see
the section above on message formats. This command takes a list of
destinations which determines where the message is to go. See the section
above on destination lists.
A message can be sent to all logged in users via the SEND * command. The
message will be typed out on the terminal of every logged in user.
Also, the command SEND ARPA* will send a message to all users who are logged
in at Stanford via the ARPA network.
There is no ARPA network standard protocol for implementing the SEND command
to a remote host. However, a private protocol for this purpose has been
implemented for use between SU-AI and the ITS systems at MIT. The MAIL
program will attempt to use this protocol to any host, but it isn't going to
work except to an ITS. When a SEND fails to a remote host for any reason,
the message is never queued for later delivery--its delivery is simply
aborted.
MAIL: The REMIND Command
The REMIND command allows the delivery of a message to be delayed until a
particular date and time, and/or to be repeated periodically. This command
requires a date and/or time, which are interpreted as explained above in the
section on dates and times.
Reminders are normally both mailed and sent at the specified date and time.
However, either of the switches /MAIL and /SEND can be used with the REMIND
command to cause the reminder to be only mailed or only sent. Nevertheless,
if a repeated reminder is being sent for the last time because its
expiration count has run out, it is always mailed even if /SEND was used in
the command.
When a repeated reminder's expiration count runs out, a warning message to
that effect is included in the text of the last reminder.
To selectively delete reminder requests, use the monitor command CANCEL (see
page 104).
MAIL: The GRIPE Command
Complaints, compliments, or criticisms about any aspects of the system or of
the A.I. Lab in general can be entered in the general gripe file by use of
the GRIPE command. This command takes only global switches and message
text. The gripe file can be typed out with the system program COPY by
giving the monitor command TYPE \GRIPES (which may currently be abbreviated
TY\G). This file can be examined and edited with the E editor by giving the
monitor command ETV \GRIPES (currently abbreviatable as ET\G).
MAIL: The EVENT Command
Messages of interest to everyone can be sent to the system message file by
use of the command MAIL *. However, for a message about an event occurring
on a particular day, a more useful facility is provided by the EVENT
command, which also enters the message in the system message file
NOTICE.TXT[2,2], but which does so several times: first on the day the EVENT
command is given, then again on the day before the event, and finally on the
day of the event. The EVENT command takes an explicit date and optional
time in the formats explained in the section on dates and times. EVENT will
then list the message given prefixed by a special line of the form:
Event of DAY DD-MON-YY at HH:MMxm
where DAY is the day of the week the event will occur on, DD-MON-YY is the
day, month, and year of the event's date, HH:MM is the event's time, if
given, and xm is either "am" or "pm" for the time. Thus, the date and time
need not be included in the message text itself.
On the day before the event and again on the day of the event, the event
notice will be deleted and re-entered in the notice file so that users will
see it again on those days. It is finally deleted at the midnight that ends
the day of the event. If the event is on a Monday, the notice is re-entered
on the preceding Friday, Saturday, Sunday, and the Monday of the event. If
the event is on a Sunday, the notice is re-entered on Friday, Saturday, and
the Sunday of the event. Events on other days are just re-entered on the
day before the event and the day of the event. (The re-entering of upcoming
events is implemented by including more than one expiration date in DAYCNT
format in the message header.)
If you want to change the text in an event notice, you can do a RCV * and
edit the message text or time of the event. However, if the date of the
event is wrong, you should delete the notice (with RCV) and make a new one
(with EVENT) because the octal dates in the header determine what days the
message will be seen, and the header cannot be edited.
MAIL: The PLAN Command
The PLAN command is used to create or delete a file describing your
whereabouts, office schedule, or whatever, to be read by users who give the
FINGER command to find you when you are not logged in. The PLAN command
writes a plan file called " PRG".PLN[2,2], where PRG is your programmer
name. Any previous plan file is replaced with a new one containing only the
new message you give. If you enter a null plan, your plan file is deleted.
The plan applies to your login programmer name.
The PLAN command requires an expiration date (but no time) as explained in
the section on dates and times. Your plan file will be deleted at the
midnight that begins the expiration date. (Plan file deletion is
implemented by entering a LATER request (see page 99) to run the program
DELPLN, which will delete your plan file. You can selectively delete this
LATER request by using the monitor command CANCEL--see page 104).
Your plan file can be referenced with the COPY program by using the \PLN
filehack. For instance, the monitor command TYPE \PLN will type out your
plan file, and DELETE \PLN will delete it. Also, the COPY/E message-file
specifier, partial-sign (∂), can be used to reference your own or someone
else's plan file: TYPE ∂.PLN will type out your own plan file and
TYPE ∂ME.PLN will type out the plan file belonging to programmer name ME.
MAIL: The RETRY Command
The RETRY command is used to retry all queued mail immediately. It takes no
arguments at all in the command line. RETRY searches the remind queue for
queued mail (not reminders) sent by your login programmer name and tries to
send the mail. (This will be done automatically without using the command,
but the command is provided for impatient mailers.) Please do not type
<call> or ↑C after giving this command, or you may lose a queued message.
MAIL: The LATER Command
The REMIND command, in essence, allows the execution of a MAIL or SEND
command to be delayed to a specified time. The LATER command generalizes
this delayed execution to allow an arbitrary program (dump file) to be run
at a later time. The command format is:
LATER dumpfile core datetime count
The LATER command does not accept switches and requires all of its arguments
to be on the command line. If the proper syntax is not followed, a message
is typed explaining the proper syntax and nothing else is done.
The defaults for the program file to be executed are device DSK,
extension .DMP, and your alias PPN. If a device is explicitly specified, it
must be DSK or SYS. No check is made when the command is given to ensure
that the specified file exists or is a valid program dump file.
The optional core argument can be used to control the core size and starting
address used to run the program. If this argument is not used, the program
will be run in as much core as is needed to fit it, and will be started at
its normal starting address. The core argument can be in any of these
formats:
<nK> <+m> <-m> <nK,+m> <nK,-m> <+m,nK> <-m,nK>
The angle brackets are actually to be typed. The nK subargument specifies
the number of 1024-word blocks of core to be assigned to the program; n is a
decimal integer. The +m or -m subargument is a starting address offset,
that is, m will be added to or subtracted from the program's normal start
address. Note: m is an OCTAL integer.
The date and/or time must be given in the non-switch format as explained in
the section on dates and times. If both a date and a time are given, the
date must appear first.
The optional count argument specifies the number of times the program is to
be run and is ignored unless a wildcard date is used. If no explicit count
is given when a wildcard date is used, the default count of 50 will be
assumed. The format for the count field in the LATER command is
#n
where n is a decimal integer. A count of #0 or #∞ will cause the count
never to run out.
When a program specified by a LATER command is actually run, it will have
your login PPN as its login and alias PPNs. The only privilege it will have
will be the Local User Privilege (LUP). Also, it is run as a phantom
job--if it is stopped because of an error, the job is killed.
Certain accumulators (ACs) are set up when the program is started to
communicate information from the remind phantom to your program:
AC Contents
1 filename of program dump file (same as job's name)
2 extension of program dump file
3 PPN of program dump file--[1,3] if device SYS was specified
4 -1 if this LATER request will not be run again, else 0
The program can only be run if a job slot is available at the time for which
it is scheduled. If the remind phantom is unable to run the program because
no job slots are available, it does not try again later (unless, of course,
the date and time specify repetition). If the system is so crowded that job
slots are in short supply, users who are present in the flesh get priority
over LATER requests. This is rarely a problem except for weekday
afternoons. (If there is no job slot for the remind phantom itself, it will
try to run your request once, as soon as it is run itself.)
LATER requests can be selectively deleted by using the monitor command
CANCEL (see page 104).
MAIL: The BATCH Command
Sometimes you may want to delay the execution of one or more monitor
commands. To allow this, the BATCH command accepts a command string and
enters a request to run a program which enters the commands through a
pseudo-teletype (PTY). The message given with the BATCH command is taken to
be the command or sequence of commands which is to be typed to the PTY. The
only switches permitted are /DATE, /TIME, /COUNT, /NOW, and /DO. The /COUNT
switch specifies the number of times the command sequence is to be executed
and is ignored unless there is a wildcard date. The /NOW switch causes
BATCH to execute the command sequence as soon as you have finished entering
it instead of later; in this case no date or time must be given. The /DO
switch causes certain character conversion to be done when entering the
commands, as in the DO program and as explained below.
Character Effect in /DO mode
RETURN ignored
LINE ignored
↔ translated to RETURN followed by LINE
↓ translated to LINE
≠ translated to ALT
λ translated to deferred CALL (one ↑C)
VT adds CONTROL bit to following character
α adds CONTROL bit to following character
FORM adds META bit to following character
β adds META bit to following character
⊗ translated to ESC
⊗- translated to BREAK
≡ quote the following character (no translation)
Note that the characters | and ? which have special meanings in the DO
program are not treated specially by the BATCH/DO command.
If the /NOW switch is not used in the BATCH command, BATCH writes a file on
your alias disk area called BATn.DMP (n is a number chosen to make the name
unique) and enters a LATER request for the running of that program. The
BATn program types the desired commands into a pseudo-teletype (PTY) when it
is run. The LATER request starts the BATn program at one more than its
normal start address; if it is started normally (e.g., RUN BATn), it simply
types out the commands stored in it, so you can find out which BATCH program
is which if you enter more than one. When the BATn program is started by
the LATER request, it writes a file called BATn.LOG on your login disk area
with a log of the commands and typed output. The BATn.DMP file is deleted
when the request is being run for the last time.
If BATCH/NOW is used, no BATn.DMP file is written. The MAIL program itself
executes the command sequence through a PTY as soon as you have entered the
whole command sequence. In this case, the log file is called BATCH.LOG and
is written in your alias directory.
BATCH requests can be deleted selectively by using the monitor command
CANCEL (see page 104). If you delete a BATCH request with CANCEL, the
BATn.DMP file will not have been deleted; you must delete this file
separately.
The BATCH command has many deficiencies when considered as a full batch
processing facility. There is no way to control the commands issued on the
basis of past output, no provision for aborting a command sequence if an
error occurs, no provision for mounting tapes or collecting listings. The
command is not intended as a real batch processing system, but merely as a
convenience for delaying the execution of simple commands.
MAIL: The REENTER Error Recovery Facility
The MAIL program remembers all of its input after execution, and can be made
to repeat the command with or without modifications to the command,
switches, destinations, and message. To invoke this facility, type REENTER
to the monitor.
To use this feature while typing in the message text, you can type ↑C and
REENTER, but any text still in the line editor buffer or the TTY buffer when
you type ↑C will be lost. Unless the system is very heavily loaded, the
problem of losing text from the TTY buffer should not come up, but be sure
to type <CR> to activate any text in the line editor before typing ↑C.
Two different modes of REENTER operation are provided. If the command and
destination list were all typed on one line of input from a Stanford display
terminal, that line is loaded into the terminal's line editor and can be
edited and re-activated. In this case, the program forgets all about the
previous command and starts from scratch when the edited command is seen.
The text of a single-line message will be included in the reloaded line; no
message text will be loaded for a multi-line message, but the old text is
remembered and if the new command does not contain a message or a pointer to
a message file, the old text will be re-used. Note: the subject line is
considered part of the text, and the state of the /SUBJECT switch may not be
changed if the old text is re-used in this way.
The second mode of repeating a command is used if the destination list was
given on more than one line or from a non-display. In this case, the
command and destination list are typed and you are asked if you want to keep
the old destinations. Whether you answer yes or no, the command name and
global switches are loaded into your line editor (displays only) and new
destinations can be added on the command line. Finally, if no message text
appears in the re-edited command, the old message is used as in the first
mode. (Note: in this mode, only valid destinations are remembered from the
old destination list; in the first mode what is remembered is the actual
string of characters you typed.)
If the old text is re-used, in either mode, before sending the message the
MAIL program asks if the user wants to edit the command or the message text
with E. (Editing with E is allowed whether or not the user is at a Stanford
display, although of course it's easier to do from a display. SOS editing
is not available because SOS does not use the same SNAIL-startup conventions
as E.) In this case, a MAIL.TXT file is written and E is run as in the
<CONTROL><META>E case--return to the MAIL program is done via the
<CONTROL>XRUN command.
MAIL: Hand-Holding Mode
If a command (other than LATER and RETRY) is given with no arguments other
than optional global switches, the MAIL program will use an alternate syntax
called hand-holding mode which is more verbose but less confusing to an
inexperienced user. In this mode, MAIL will prompt separately for each
piece of information appropriate to the given command; the possible prompts
include:
"To" destinations
"CC" destinations
Date and time
Expiration count
Subject
Message text
One possibly important difference between this and the normal syntax is that
the subject line is always entered separately from the body of the message,
even if the latter comes from a file.
Each prompt may be answered by a line containing just the character "?" to
see a message explaining the format of the required information for that
prompt.
A REENTER command following the use of this format will be treated the same
as one following a multi-line destination list in the normal format.
MAIL: Interfacing to MAIL from Other Programs
The MAIL program can be run from another program using the SWAP UUO. A
special facility is provided for providing MAIL with the required arguments
via the ACs which are preserved by the SWAP UUO. To do this, start
SYS:MAIL.DMP at one less than its normal starting address. The message text
(including subject line, if desired) must first be written in a disk file,
or a TMPCOR file if the MAIL program is to be run in the same job as the
swapping program. MAIL will, if desired, SWAP back to the originating
program (or any other program). The ACs should be set up this way:
0-5 SWAP UUO arguments for return after MAIL if desired:
0 device
1 filename
2 ext,,mode bits (see UUO manual)
3 core,,starting address increment
4 file PPN
5 login PPN if starting new job
6-16 MAIL arguments:
6 destination PPN or file (see below)
7 file extension if required
10 file PPN if required
11 message text file name
12 message text file extension
13 unused
14 message text file PPN
15 date and time for REMIND (see below)
16 flags (see below)
17 is the SWAP AC and is not preserved in return after MAIL.
The flags in 16 are:
400000,,0 not used
200000,,0 /-E
100000,,0 /NODIST for ARPAnet mail
40000,,0 /LIST
20000,,0 /SEND
10000,,0 /-HEADER
4000,,0 /QUEUE
2000,,0 /APPEND
1000,,0 /DIST for local mail
400,,0 /WHERE
200,,0 /SUBJECT
100,,0 /MAIL
40,,0 /YESMAIL
20,,0 /NOMAIL
10,,0 /EXPAND
4,,0 command is REMIND
2,,0 command is MAIL
1,,0 command is SEND
774000 not used
2000 read destinations from named file (ACs 6-10)
1000 return via SWAP when done
400 text input is from TMPCOR file
200 delete input text file when done
100 send to job (binary number in AC 6)
40 send to TTY (SIXBIT name in AC 6)
20 destination is * or ARPA* (AC 6 ignored)
10 mail to explicitly named file (ACs 6-10)
4 don't use this bit (/CC)
2 /ARPA (2000 bit must also be on)
1 if SEND, send to ARPA* (20 bit must also be on)
if MAIL, delete old contents of file
(for PLAN, see below)
Nothing is guaranteed about the results of setting inconsistent or
irrelevant combinations of flags, e.g., /EXPAND for a command other than
REMIND. Note that the /MAIL switch has two different meanings for the SEND
command and the REMIND command, but is the same bit in either case. Bits
which are currently unused should be zero.
If the 400 bit in AC 16 is on, the left half of AC 11 is taken as the TMPCOR
file name; the TMPCOR file PPN is the alias PPN of the MAIL job. The 200
bit in AC 16 will delete either a DSK file or a TMPCOR file.
The usual case is sending a message to a programmer name. For this case,
AC 6 should contain zero in the left half and the sixbit programmer name
right-justified in the right half. Do not use "." for your own programmer
name (use the programmer name explicitly) nor "*" for a wildcard destination
(use 20 bit in AC 16).
Mail can be sent to any file (as in the #file destination format) by setting
the 0,,10 bit in AC 16 and specifying the filename in ACs 6-10. More than
one destination, or a recipient at another ARPA network host, must be
specified by using an indirect file as in the @file destination format; set
the 0,,2000 bit in AC 16 and specify the file with the destination list in
ACs 6-10.
Any files used (except the TMPCOR message file) must be on device DSK. No
default extensions will be used; specify the desired extension explicitly.
(The right half of an extension word must be 0.) A zero file PPN uses the
job's alias PPN as usual.
Exactly one of the 7,,0 bits should be on in AC 16 to specify the command to
be carried out. The effect of the PLAN command is achieved by specifying a
MAIL command with the delete-old-text bit and explicit file destination
(2,,11 in AC 16) and " prg.PLN[2,2]" as the destination filename in
ACs 6-10.
The date and time in AC 15 is in the format:
BYTE (4)MONTH (5)DAY (6)YEAR (3)DAY-OF-WEEK (6)HRS,MINS,FLAGS
The flags are used for special formats:
0,,1 absolute date, DAYCNT in left half
0,,2 date is tomorrow (lh is zero)
0,,4 every day reminder (lh is zero)
Otherwise, zero in the left half means today's date, a nonzero number in the
7,,0 bits is an every-week reminder (1=Wed, 7=Tues), and anything else is an
every-month or every-year reminder with at least one of the month and year
fields zero. Month 1 is January, day 1 is the first of the month, and year
1 is 1965. The HRS field is hours past midnight (0-23) and the MINS field
minutes past the hour (0-59). An absolute date (no wild fields) must be in
DAYCNT form.
Another facility is also provided for queuing MAIL requests when the SWAP
technique is inappropriate, for example because another job slot might not
be available and your program must keep itself going rather than be swapped
back in later. This facility was designed for the FTP server but can be
used by other programs. Write a file called <anything>.FTP[RMD,SYS] which
contains, in text form, a MAIL command and destination list on the first
page, and the message text on the second page. (This is the format of the
MAIL.TXT file used for editing messages with E.) When the remind phantom is
next run, it will try to start a MAIL job which will execute the command and
delete the file.
MAIL: The CANCEL Command
The monitor command CANCEL will run the CANCEL program which will list, and
allow selective deletion of, REMIND requests from or to you, BATCH and LATER
requests by you, and queued mail from you. This program can also be used to
list these requests without asking whether you want to delete them: after
any request is listed, type the letter L in answer to the deletion question
and any remaining requests will be listed without interruption. Since the
CANCEL program has to share the use of the reminder queue files with the
system reminder phantom job, there will sometimes be a delay in the listing
of reminders. An appropriate message is typed in this case.
MAIL: The RCV Command
The RCV program allows MAIL messages to be selectively deleted, listed, or
saved as desired. The program is called by simply entering the monitor
command RCV. All mail files which can be construed as being for you are
offered for your perusal. It is also possible to edit other users' mail
files with RCV by giving an argument, e.g., RCV BH. The command RCV * will
allow editing of the system message file NOTICE.TXT[2,2], and RCV GRIPE will
allow editing of messages sent by the GRIPE command. Most mail files are
maintained in E format, and E format is not preserved when such a file is
edited with RCV--therefore:
*** NOTE: IF YOU EDIT AN E-FORMATTED FILE, RCV WILL INVALIDATE ***
*** THE DIRECTORY PAGE AND ISSUE A WARNING. SUCH FILES SHOULD ***
*** USUALLY BE EDITED WITH E TO PRESERVE THE PAGES AND FORMAT. ***
RCV also allows editing of the files created by the news service automatic
notification feature; the command RCV \ will present your notifications for
editing, and RCV \PRG will allow you to edit the notifications sent to user
PRG.
It is also possible to use RCV on files not in [2,2] (such as saved message
files previously created with RCV) with a command like:
RCV #filename
with default of DSK:SAVED.MSG in your (alias) disk area. The conventions
given below for output filenames also apply here.
Finally, the command RCV ?PRG will type the plan file for user PRG, if there
is such a file. In this case, the file is merely typed, not edited.
** NOTE: ONCE RCV HAS OPENED A MESSAGE FILE, YOU SHOULD EXIT ONLY **
** BY TYPING "E" TO AN OPTION REQUEST, AS EXPLAINED BELOW. TYPING **
** <CALL> TO EXIT MAY RESULT IN LOSING SOME OF YOUR MESSAGE TEXT! **
If none of the messages in an input file is deleted or changed, RCV does not
write out a new version of the file; thus the file's time and date written
are unchanged, and, particularly, any ETV directory the file may have had is
still intact.
RCV deletes without comment all formfeed characters in any file edited (that
is, any file actually changed). Thus any page structure of such a file is
destroyed by RCV.
When a mail file is opened, messages are typed out one at a time, and for
each message you may select several processing options, in the format
<options> [ <space> <filename> ] <cr>
where the [...] represents an optional argument. Each option is represented
by a letter; more than one may be used, except that a few options must be
used alone, as noted below. The filename may be specified if you select the
C (copy) or T (transfer) option. For help in specifying a file, use ? as
the filename. Here are the option letters which select a final disposition
for the message:
S Save the message in the mail file.
D Delete it from the mail file.
C Copy it to a file of your choice.
T Transfer it to a file. Like CD.
L LPT spool it.
X XGP spool it.
K Transfer it to the file LOGOUT.MSG, which will be typed automatically
when you log out.
If none of the above are used, the message will be Saved. Combinations may
be used, e.g., LD will spool the message on the LPT and also delete it from
the mail file. The message will be Saved unless D or T is explicitly
specified. Along with any of the above (or alone, implying S) may be used
at most one of the following editing options:
A Append to the message from the terminal.
Z (Stanford displays only) Edit the message line-by-line using the
system line editor. If you need help with this facility, type
<control><meta>? after entering the line editing mode.
M (Stanford displays only) Modify the message by running the text
editor, E, with that message as its input. Return from E by typing
<control>X RUN.
Along with any of the above, or alone, can be used the following option
letters to avoid seeing more messages:
E Exit, and enter spooling requests from L or X options.
N Go to the Next mail file, if any, else exit like E.
If the message was longer than the amount RCV types out before asking for
option requests, the following option may be used along with any others
specified:
Q Quiet processing; do not type the remainder of the message while
processing it as usual.
Note: E or N with no other options implies Q automatically. Alternatively,
any of the following may be used as the only option, for special processing:
P Postpone the decision for this message. This applies only if the
message was longer than the amount RCV types before asking for
options, and you wish to see the rest of the message before choosing
options.
? Type this option list.
Spooling requested by L or X is not done until RCV is exited (by typing E to
an option request, or by running out of input). The default filename for C
and T is DSK:SAVED.MSG in your alias area. Filenames may only be given
along with a C or T option; if C or T is used without a filename the
previous file is continued. (The first time, you will be asked for a
filename, which may be simply <cr> for SAVED.MSG.)
If you use an argument in the RCV command to edit another user's mail, the
first time you specify any option which would remove a message from the mail
file or alter its contents you are asked to confirm it. Once you have
confirmed such an option, however, you are not asked again.
There are two options provided at Stanford displays for editing the text of
a message. The M option writes the message in a disk file, QQRCV.TMP, and
runs the E editor, which allows great flexibility because of E's powerful
editing capability. However, it is rather slow, because all of RCV's
internal information and all the message files must be saved on the disk.
For minor corrections to a short message, you may prefer the weaker but
faster editing capability provided in RCV itself by the Z option. If you
select that option, the lines in your message will be presented to you one
by one in your terminal's line editor. You may edit each line, using the
normal line editor commands, and type <cr> when done with a line. You may
also type the following special characters (α means control, β means meta):
α<cr> Accept the current line as it now appears in your line editor
buffer and stop line editing, accepting the rest of the message
as is.
αβD Delete the current line.
<alt> Undo the changes in this line, loading a fresh copy into the
line editor.
αβ<cr> Accept lines to be inserted before the current line, until an
inserted line is terminated with α<cr> instead of <cr>, or
<alt> is typed at a blank line.
αβI Same as αβ<cr>.
αD (at the end of a line) Combine this and the next line and load
the combined line into the line editor.
β<cr> Break the line at the cursor, accepting the text to the left of
the cursor as it stands and editing the remaining text as a new
line.
αβA Leave line edit mode, as for α<cr>, but accept text from the
terminal to be appended after the existing text, as if the A
option had been selected.
αβ? Type this list.
Blank lines presented for editing in the Z option are indicated by the
typing out of a space before loading the line editor with the empty line;
thus originally empty lines will be indented in the typeout. In both M and
Z options, the initial header line is not edited. In the Z option, the
blank line at the end of the message is not edited. In the A option,
appended text will be inserted in front of the blank line at the end of the
message, unless the P option was previously used on the current message.
The first time you specify C or T, you are asked to specify a file name if
one was not included in the option line. You can reply with either a
standard filename, ?, or <cr>. Just <cr> uses the default file name,
DSK:SAVED.MSG in your (alias) area. Just ? will print a helpful message and
let you try again. Thereafter, whatever file you specified will be used for
all C and T messages (the file is not closed until you exit or select
another one) until you specify a new filename along with a C or T option as
described above. Note: if the specified file already exists and is in E
format, the new messages are added at the end of the file preceded by a
single formfeed; if the file already exists but is not in E format, the new
messages are added at the beginning of the file. If the file does not
already exist, it is created in E format and a warning that you are creating
a new file is issued.
If all messages are removed from an input file, the file is deleted after
all output files are closed, unless the input file is named OUTGO.MSG in
which case the empty file (which may actually contain a few spaces, carriage
returns, and linefeeds) will survive. If none of the messages in an input
file is deleted or changed, RCV does not write out a new version of the
file; thus the file's time and date written are unchanged, and,
particularly, any ETV directory the file may have had is still intact.
The notation ↓chars↓ may be used to get non-alphameric characters in a
filename. In addition, a shorthand notation is provided for entering names
of mail files: if the character ∂ is the first character of the filename,
then the device becomes DSK, the default extension .MSG, and the default ppn
[2,2]. (The extension and ppn can be changed later in the filename.) If
the next non-blank character is not alphameric, the filename used is your
programmer name right justified, e.g., ↓ REG↓. (Note that this is your
own login name, not the name whose mail you are editing.) Thus, the
filename ∂ represents your own mail file. You can specify a different
programmer name with the format ∂prg and either this or the format ∂ can
also be optionally followed by an extension and/or a PPN to change the
default values as described above, e.g., ∂.PUR or ∂[1,ME].
RCV has a fairly small message buffer. If a message is longer than that
buffer, seeing the first few lines of the message may tell you enough about
it to decide how to process it without seeing the rest. Therefore, in that
case, you will see as much as fits, followed by an overflow notice and an
option request. After you enter the desired options, the remainder of the
message will be typed as it is being processed, so you may safely use the
Delete option and you will still see the rest of the message. If you want
to avoid this continued typeout, type the letter Q (for Quiet) before your
option choice, e.g., QD for Quiet Delete. Q is only recognized when a
message overflows. If you select E or N with no other options, you get Q
automatically. If this is not what you want, type, e.g., SE. If you wish,
you may postpone the decision on how to process the message until after
seeing the rest of it, by typing P to the option request. This will type
the remainder of the message and ask again for options. QP is illegal, and
P is only legal when a message overflows.
RCV may be used when not logged in; however, each user can control access to
his own mail, by OPTION.TXT options. Three possibilities are available.
The default is no access. To allow your mail to be read but not modified,
put
RCV:READ
in your OPTION.TXT file. If the not-logged-in user types RCV PRG the file
examined is OPTION.TXT[1,PRG]. You may also allow not-logged-in users to
edit your mail file as if they were logged in by using
RCV:WRITE
as the option.
Not-logged-in users at Stanford display terminals (Data Disc or III) always
have at least READ access to mail.
It should be noted that the normal file protection mechanism still applies,
so that most options which involve copying the message to another file will
not work when not logged in. This includes C, T, K, L, X, M, and P.
A not-logged-in user who is reading mail as permitted by the READ option may
safely use <call> to quit RCV.
There is a special option available in RCV for reading the A.P. news
digest. This option is provided when the RCV command is given without an
argument, if you have an OPTION.TXT file with a line of the form
RCV:DIGEST;
You are asked "Read A.P. digest?" if the digest file exists. This option
may be used along with READ or WRITE as described earlier.
Another special option available through the OPTION.TXT file is:
RCV:NOMAIL;
If you have this option and give the RCV command without an argument, RCV
ignores your main message file and simply processes any other files which it
would normally handle. This is provided for users of various special RCV
features (such as DIGEST above) who use E to edit their mail files since
mail files are now normally in E format. To override the NOMAIL option
(i.e., to edit your mail file with RCV), give your programmer name
explicitly in the command, e.g., RCV PRG.
For use at non-Stanford terminals, RCV has a mode in which it accepts tty
input in SOS representation (see Appendix 13). The main reason for this is
to allow ?* instead of ∂ for redirecting messages to another mail file, but
it can also be used with the append option to allow appending upper/lower
case text from an upper-case-only terminal. The following notes apply:
1. When RCV is started, it decides whether or not to use SOS representation
on the basis of the FCS (full character set) bit maintained for each
terminal by the monitor. This bit is set by the TTY FULL command (or ESC F
at a Stanford display) and cleared by TTY NO FULL (or BREAK F).
2. Whenever RCV reads an altmode character from the tty, it will enter SOS
mode and otherwise ignore the altmode, except that if you are already in SOS
mode the sequence ?<alt> will leave that mode. (If you are not in SOS mode,
of course, the ? will be taken as a real question mark and the <alt> will
enter SOS mode!)
3. These comments apply even to the original command line, although the
monitor will echo a crlf after the altmode to confuse you. Note that if
your FCS bit is off and you want to invoke the RCV feature which types a
user's plan file, you must say RCV ??prg instead of RCV ?prg as usual.
4. Under no circumstances is tty output done via SOS conversion. I hate
seeing all those question marks!
5. If you are in SOS mode and type ? followed by a character which is not
defined as an SOS code, the character will be treated, and echoed, as
ASCII 7; this will ring your tty's bell if it has one, give an error message
if you are responding to an option request, and insert a π in your message
if you are appending.
APPENDIX 5--DART
The DART (Dump and Restore Technique) program is used to save disk files on
magnetic tape. It also includes tape positioning commands. This appendix
is excerpted from the file DART.REG[UP,DOC], which includes information on
DART tape formats, complete disk dumps, etc., as well as the following
facilities provided for individual users.
In the description below, braces, { and }, are used to denote optional
items. Vertical bar, | , denotes an exclusive-or choice. Pointed brackets,
< and >, are used to enclose syntactic items that are defined below.
DART accepts the following monitor commands:
DUMP {<dest>←}{<source>}
RESTORE {<dest>←}{<source>}
REWIND {<dev>{:}}
EOT {<dev>{:}}
ADVANCE {FILE|RECORD} {<dev>{:}} {<count>}
BACKSPACE{FILE|RECORD} {<dev>{:}} {<count>}
LOCATE {<dest>←}{<source>}
TLIST {<dest>←}{<source>}
<dest> ::= {<dev>:}<file>{.<ext>}{[<prj>,<prg>]}
<source> ::= {{<dev>:}{[<prj>,<prg>]}@}
{<dev>:}<file>{.ext}{[<prj>,<prg>]}{,<source>}
<dev> is "any" legal device name.
<file> is any file name or *
<ext> is any file extension or *
<prj> is any project code or *
<prg> is any programmer name or *
<count> is any string of decimal digits.
Caution: The only devices that are appropriate here are disk, mag tape, and
UDP.
REWIND
This command will cause the device named to rewind to load point. MTA0 is
the default if no device argument is used. The device named should be a
magnetic tape unit.
EOT
This command will cause ADVANCE FILE to be repeated until either two
adjacent file marks are seen (logical end of tape) or until physical end of
tape is reached.
ADVANCE and ADVANCE FILE
This command will cause the tape to advance past the next file mark on the
tape. If a repeat factor is given, then the command will be repeated that
number of times.
Caution: DART often records more than one disk file on a mag tape file!
Therefore, advance file will (sometimes) skip more than one disk file.
ADVANCE RECORD
Same as ADVANCE FILE except that instead of file marks, record marks are
used. This command leaves you at the front of a record.
BACKSPACE and BACKSPACE FILE
This command will cause the tape to move backwards until a file mark is
seen. DART then does one ADVANCE FILE operation to position the tape at the
front of a file (immediately after the file mark just read). If a repeat
argument is given, then that argument is used to repeat the backspace
operation. Only one ADVANCE is used, after all backspace operations.
Caution: BACKSPACE or BACKSPACE 1 will position the tape at the front of the
current mag tape file. BACKSPACE 2 will position one previous, etc.
BACKSPACE RECORD
Same as BACKSPACE FILE except that record marks are used to stop the
operation instead of file marks. After all backspaces are completed, DART
does an ADVANCE RECORD command.
LOCATE
For each file named in the argument list, this command prints the tape
numbers where this file was dumped and the corresponding creation dates of
the file.
TLIST
This command will list on the destination device the names of the files that
are read from the source device.
DUMP
This command will write on the destination device, which should be a magtape
(default is MTA0), those files that are specified by the source term. If
there is no source argument, *.*[current area] is used.
RESTORE
This command will restore from tape to the destination the files that are
described by the source term. A null source or destination means
*.*[current area]. The command RESTORE [*,REG]←[*,REG] will restore all of
REG's files to the areas that they were dumped from. Note that if any *
terms are specified or implied in the source, the entire tape will be
searched for matching terms.
APPENDIX 6--SERVICE LEVEL SYSTEM (RSL)
The RSL monitor command runs the RSL program to reserve service level. The
monitor command takes no arguments; the RSL program itself accepts commands
which control its operation. The first section of this appendix explains
the concept of service level.
The timesharing scheduler gives different priorities to each of three user
classes: interactive users, reserved users, and all others (scavengers).
The first goal of the scheduler is to provide good service to anyone doing
interactive work such as editing. The system decides whether a given job is
currently interactive on the basis of keyboard input activity.
When you log in at a time for which you have made a service level
reservation, you are assigned that service level. Whenever you are running,
the scheduler will then attempt to give you a processing level (% of CPU
time) given by
PL = SL - C * (B - 1)/5
where SL is the service level, C is your current core size (in pages), and B
is the price of service level. The system will not let more than a certain
total service level to be allocated in this way (currently 80%).
If you are neither interactive nor reserved, you get some of what is left,
which may be pitifully little. The system is supposedly rigged so that
reserved users always get service at least as good as scavengers. Note that
if you are editing and execute a long-running string search, the system may
decide you are a scavenger and take forever to finish.
Each authorized user has an allowance of two kinds of money, called whams
and bams. Whams may be used only to purchase reservations for peripheral
devices, including III terminals, while bams are good only for CPU service.
The allocations are as follows.
Whams Bams
Half time user 4 100
Full time user 8 200
Panic user 16 400
You are half time or full time in accordance with the portion of your time
devoted to A.I. activities. In an emergency situation, you may be given a
short term appointment as a Panic user.
Your "money" allocations are actually revolving funds in that if you reserve
machine time and use it, you may then re-use the reservation money. In
effect, then, there is a limitation on how much you can reserve at a given
time. There is no conversion between whams and bams, nor can funds be
transferred between persons.
The display costs W (whams/hour) vary with time of day as given in the table
below. The price P (bams/hour) of buying any given service level SL (in
percent) is
P = SL*B
where B is the rate (bams/hour) given in the same table.
Time 0000-0900 0900-1300 1300-1800 1800-2400
W & B W & B W & B W & B
Monday-Friday 1 2 3 2
Sat., Sun., holidays 1 1 2 1
You may reserve a display without a service level or vice versa, but
reservations may be made only for integral hours beginning on the hour.
Other peripheral devices may be reserved only if you have reserved a service
level. The minimum service level purchase is 5%.
The time from 8AM to 9AM and from 5PM to 7PM on weekdays is reserved for
maintenance. No service level or device reservations may be made in those
time periods until 18 hours before the period. Maintenance reservations for
the entire machine may be made, however.
Service Level System: Using the RSL Program
The monitor command RSL with no arguments runs the RSL program. You must be
logged in first.
RSL will prompt you with an asterisk ("*") when it's ready to accept
commands. Command format is discussed in detail below. Commands are
RESERVE, CALENDAR, AVAILABLE, DISPLAY, MAINTENANCE, HELP, and EXIT.
For example, to reserve 15% SL at 1400 on the 31st of December, any of the
following command strings will serve:
RESERVE 15 SL AT 1400 HOURS ON 31-DEC
r 15 on 31 decemb at 2 p.m.
RE 2 PM ON 31 DECEMBER 15
R 15 14 31 12
If you wish to change a service level reservation, just do another
reservation for the new desired amount. Releasing a service level
reservation may be done by "reserving" 0% SL.
Service Level System: IMPORTANT!
When you are through making reservations, you should exit from RSL by typing
E. If you exit instead by typing CALL, then there is a possibility that
your reservations may get lost. The E command causes reservations to be
written out onto the disk.
Service Level System: How to Reserve Devices
The six III displays, the user disk pack, plotter, and MTA0 may also be
reserved. RSL merely makes and retains device reservations; unlike service
level, enforcement is left up to the users. To reserve III24, 5% service
level, and the user disk pack, type RESERVE 5 SL III 24 UDP or R III4UDP5.
A device may be unreserved by preceding it with a minus sign: R -III PLTR
-UDP MTA will simultaneously reserve MTA0 and the plotter, and unreserve the
UDP and any and all IIIs. If you don't care which III you get, you may say
III instead of III4 or III23 etc. Note that the plotter is considered by
the computer to be the same device as the paper tape punch, so reserving
PLTR also makes the PTP unavailable.
Service Level System: Other Commands Available
To get a list of your current reservations, type DISPLAY or D for short.
The command string D XYZ will get a list of programmer XYZ's current
reservations.
The CALENDAR command will show you which programmers have what reservations
on a given time and date. For example, C FOR 3 will show you the
reservations for the current hour and the following 2 hours also.
AVAILABLE is a short form of CALENDAR. A 0000 HOURS FOR 24 ON 1-JAN-88 will
yield 24 lines of output telling how much service level is still available
at each time slot on the first day of 1988, should the system last so long.
HELP or H will type for you a summary of command string structure in
condensed form, not necessarily comprehensible.
The MAINTENANCE or M command reserves the entire (bare) machine for hardware
or software purposes, e.g., M 4 pm for 2 will request the machine for
maintenance from 4 to 6 pm. This command can also be used to cancel a bare
machine reservation. Just type a minus sign immediately in front of the
date specification, e.g. M -25 nov 73 for 2. Do not use this command
without prior administrative approval.
Proper use of the EXIT command can be very important, and requires an
understanding of its function. The data base for all current and future
reservations is kept internally in the *-SL-* program at all times. Many of
the commands you give to RSL cause a change in this data base. However,
these changes are not necessarily made in the permanent data base, which
lives on the disk. The EXIT (or E) command causes the internal data base to
be written out on the disk, and it is only this copy which can survive
system crashes or system maintenance. It is possible to lose reservations
by leaving RSL with CALL instead of E.
Service Level System: RSL Command Syntax
Anything in curly brackets is optional.
A slash ("/") between two terms represents one or more delimiters (space,
slash, apostrophe, minus sign, comma).
A double arrow ("↔") between two terms indicates that the order of the terms
is not always important. If the syntax of a term distinguishes it, then it
may appear anywhere in the command line, provided no nondistinguishable term
which might be confused with it precedes it. (It's simpler than it sounds.)
<RSL command> ≡ <Rcom>|<Acom>|<Ccom>|<Dcom>|<Hcom>|<Mcom>|<Ecom>
<Rcom> ≡ RESERVE {<sl-arg>}↔{<hr-arg>}↔{date-arg>}↔{<for-arg>}
↔{<device>}
<Acom> ≡ AVAILABLE {<hr-arg>}↔{date-arg>}↔{<for-arg>}
<Ccom> ≡ CALENDAR {<hr-arg>}↔{date-arg>}↔{<for-arg>}
<Dcom> ≡ DISPLAY {<programmer initials>}
<Hcom> ≡ HELP
<Mcom> ≡ MAINTENANCE {-}{<hr-arg>}↔{<date-arg>}↔{<for-arg>}
<Ecom> ≡ EXIT
<sl-arg> ≡ <integer> | <integer> SL
<hr-arg> ≡ {AT} <military hour> | {AT} <civilian hour>
<civilian hour> ≡ [ 1 | 2 | ... | 12 ] { AM | A.M. | PM | P.M.}
<military hour> ≡ [0 | 1 | ... | 23]{00} {HRS|HOURS}
<date-arg> ≡ {ON} <people day>
| {ON} <day-arg>/<month-arg>{/<year-arg>}
<people day> ≡ SUNDAY | MONDAY | ... | SATURDAY
<day-arg> ≡ 0 | 1 | 2 | ... | 31
<month-arg> ≡ <people month> | <computer month>
<people month> ≡ JANUARY | FEBRUARY | ... | DECEMBER
<computer month> ≡ 1 | 2 | ... | 12
<year arg> ≡ {19}71 | {19}72 | ... | {19}80
<for-arg> ≡ <integer> | FOR <integer>
<device> ≡ MTA | PLTR | UDP | <iii>
<iii> ≡ III | III0 | III1 | ... | III5
| III20 | III21 | ... | III25
Service Level System: Semantics
Names of commands, weekdays and months may be abbreviated by truncation, and
may be capitalized or not. Device names may not be abbreviated.
The FOR term (e.g., FOR 3) specifies a consecutive number of hours, starting
with the hour and date specified.
When the syntax of a command does not allow a left-to-right scanner to
distinguish terms, then the ambiguous terms will be assumed to be in the
order listed in the syntax.
If a term is missing from an argument, RSL will supply one it deems
appropriate. RSL always has a time and date "in mind," called the default
date. The default time and date are usually the last time and date you
typed. If a command does not specify a time (date), then the default time
(date) will be used.
Commands terminated with a line feed (altmode) will advance (backup) the
default time and date before executing the command. The amount of advance
(backup) is 1 hour, 1 day, 1 week, 1 month depending as plain, control,
meta, or control-meta were used with the line feed (altmode).
A date specified by giving the name of a day, is the earliest future or
present date falling on the given weekday. (Notice that at 0830 on
Wednesday, "WEDNESDAY" specifies either the current date, or the date one
week hence, depending on the hour specification.)
APPENDIX 7--FIXIMLAC
The FIXIMLAC command is used from IMLAC terminals to reload the program
which controls the terminal into its minicomputer. The command runs a
program on the PDP-10, and may be used without logging in first. The use of
the command is shown below as part of the startup procedure.
IMLAC RELOADING PROCEDURE
IF THE IMLAC IS DEAD:
1. SHIFT LOCK off (up).
2. Start at 40 (Push STOP, then hold the AT 40 key while pushing START).
3. Type C (upper case) several times to send ↑C's.
4. Type fiximlM (upper case M goes out as a <CR>).
5. Wait about 10 seconds to give the system time to log you in.
6. Hit <CONTROL><TOP><SHIFT>S.
IF THE IMLAC IS ALIVE:
1. At monitor level, type FIXIML.
2. When the program puts out a *, type
<CONTROL><TOP>B (Sends the IMLAC to its loader)
<CONTROL><TOP><SHIFT>S (Starts the loader)
APPENDIX 8--ARPA NETWORK
The ARPA network is a facility organized by the Advanced Research Projects
Agency of the Department of Defense to connect computers at various research
centers funded by ARPA, allowing people at one host to use the resources of
another host. The device which provides the interface between our computer
and the network, called an IMP (Interface Message Processor), can be used by
user programs like any other I/O device. Two main system programs are
provided for connecting to other computers by console commands: the user
TELNET program and the File Transfer Protocol program (FTP). The former
allows you to use your terminal as if it were a terminal of the remote host
computer; the latter provides high-speed transmission of data between hosts.
This appendix explains the use of these programs. It contains excerpts from
the file NET.JAM[UP,DOC], which also describes the UUOs for user programming
of the IMP. The FTP command description here is taken from FTP.DCS[UP,DOC].
The TELNET or TN commands, which are identical in effect, are used to run
TELNET. The FTP command runs FTP. Both require that you be logged in.
They take a remote host name as argument. (The host names are listed in a
later section of this appendix.) Both programs try to establish a
connection to the remote host. Once this connection is established, the
TELNET program simply allows you to type at the remote computer as if you
were using one of its own terminals. (TELNET also handles special command
characters which control local echoing of typein, etc.) FTP, however,
accepts commands which allow sending and receiving files. The special
commands for these programs will be described below, after a glossary of
ARPA network jargon.
ARPA Network: Glossary
NCP This is the software in the monitor that services
the IMP.
TELNET The thing you type into that sends your characters
off to a foreign host is a user TELNET program. The
thing that receives them at the other end and passes
them on to the timesharing monitor there is the
server TELNET. These are generally user-level
programs.
SOCKET When you log in on another system, there are four
socket numbers involved. There is a local send
socket number, a local receive socket number, a
foreign send socket number, and a foreign receive
socket number. These numbers are internal
connection indexes and are used to keep different
connections separate. Each connection has a unique
set of 4 socket numbers. (Actually, there are two
connections involved, one in each direction. Thus,
in ARPA net terminology, each connection has two
socket numbers, but you have four sockets
altogether.)
LOGGER Each host is supposed to provide a program that does
nothing but sit around and listen to socket 1. When
someone connects to socket 1, the LOGGER is supposed
to send it back a socket number that the foreign
host can use to connect to the LOGGER's host on.
Only the serving host knows what socket numbers it
can service, and it is the job of the LOGGER to pass
out these numbers. (The LOGGER also listens to
socket 3 for FTP requests.)
RFC Request for connection. This is how a pair of hosts
establish a connection. The originating host sends
an RFC to the destination host with a local socket
number and a foreign socket number as arguments.
The destination host can complete the connection by
returning an RFC with the same socket numbers, or
can refuse the connection by returning a close code.
LINK Once a connection is established, an 8-bit link
number is assigned such that the 8-bit host number
concatenated with the 8-bit link number is unique at
both ends of the connection. During the lifetime of
the connection, the link number is used to separate
the connections, being as how the socket numbers are
32 bits long. The IMP itself is programmed in such
a way that only one message may be in transit on a
particular link at a time. The IMP signals the
sending host that the message has arrived by
returning a RFNM (request for new message) with that
link number as an argument. All of this is
invisible to the user.
CONTROL MESSAGES Data is sent between hosts on a non-zero link
number. Link zero is defined as the control link,
on which hosts communicate regarding the
connections. All host to host protocol messages are
exchanged on link zero.
ALLOCATION The host to host protocol defines a kind of flow
control on a higher level than the RFNM control.
This is the allocation system. When a connection is
first established, the receiving host sends a
control message telling the sending host how many
bits and messages can conveniently be buffered. The
sending host must then not send more than that many
bits or messages without waiting for more allocation
from the receiving host. Although much of this is
unseen to the user, the user has control over how
much allocation the system will give the remote
host. For data and file transfer purposes, it is
convenient to increase the allocation over the
system default amount.
ARPA Network: The User TELNET
Our user TELNET program is run by the TELNET and TN commands, which take a
host name as argument. When it is run, it attempts to connect to the
specified host. It will type either Connection established if successful,
or an error message otherwise. The various possible connection errors are
described later.
The information which follows also applies to the DIAL program, a version of
TELNET which uses dial-up telephone connections rather than the ARPA
network. The format of the DIAL command is explained on page 46. Another
version of TELNET is called PTYJOB, for communicating with a
pseudo-Teletype; it is not run with its own monitor command, but by
R PTYJOB.
Foreign hosts do not use the Stanford character set. Instead, they accept
standard ASCII codes. Letters, digits, and most of the punctuation
characters available in ASCII are the same in the two codes, however. The
main difference is that codes 1 to 37 (octal), used for special printing
characters at Stanford, are control characters in ASCII. The precise use of
these control characters is defined by the remote host. TENEX hosts, for
example, use ASCII control-A to mean "delete one character," like our BS.
Our TELNET program handles this difference by interpreting the CONTROL key
on a Stanford keyboard to mean ASCII control; i.e., CONTROL on a letter
makes TELNET convert the letter to upper case and subtract 100 from the
character code. TELNET uses META and CONTROL-META characters as commands to
itself, as listed below. In some cases, META and CONTROL-META are
equivalent. In others, a processing switch is set by META and cleared by
CONTROL-META. In the list below, βX represents META-X, αβX is
CONTROL-META-X, and ⊗X means either one.
There are certain differences between the two character sets in non-control
characters. These are handled by automatic translation in our TELNET and
FTP user and server programs. Specifically, the following translations are
done:
char Stanford ↔ external
~ 32 ↔ 176
} 176 ↔ 175
ALT 175 ↔ 33
≠ 33 → 33
The Stanford not-equal has no external representation and cannot be entered
from a remote host. All other codes are transmitted unchanged. Note that
our BS (octal 177) is the ASCII delete; there is an ASCII backspace (10),
which is our λ. Typing λ or CONTROL-H to TELNET will produce that code.
The other possible ambiguities are our characters ↑ (136) and ← (137).
These codes have two different meanings: the DEC PDP-10 version of ASCII
agrees with our use, but the official version uses those codes for ∧ and _.
Our network programs support the arrow version, and our ∧ and _ characters
are transmitted unmodified as 4 and 30.
It is possible to simulate the CONTROL and META functions when using TELNET
from a Teletype. To allow this, TELNET recognizes the character control-E
(↑E) as an escape character if it is run at a Teletype. One ↑E before a
character means CONTROL, two ↑Es means META, and three means CONTROL-META.
For example, ↑E↑EQ from a Teletype is like META-Q at a display.
ARPA Network: Control Commands to TELNET, PTYJOB, and DIAL
⊗<number>An octal argument is assembled from digits typed this way.
βL Enter line mode. Characters you type are sent to your line editor
as usual, and not sent to the remote host until activated by
RETURN, LINE, ALT, or some CONTROL or META character not taken as a
line editor command.
αβL Enter single character mode. In this mode, each character is an
activation character, and is sent individually to the foreign host
when it is typed. This is useful for using DDT at a remote host.
⊗S(no arg) Send. If TELNET is in line mode, this command causes all the
characters typed so far to be sent to the foreign host. Normally,
the characters are sent only when CR, LF, or ALT are typed when in
line mode. This command is not useful for Teletypes, because
typing ↑E↑ES does not cause an activation in line mode.
<arg>⊗S Sends the previously typed octal argument as a single ASCII
character. For instance, ⊗1⊗0⊗1⊗S is the hard way to send an "A".
αβ<BS> Sends 177 (ASCII delete). The line editor will not send <BS> to
programs without CONTROL-META if you are in line at a time mode.
BS can be sent in character at a time mode without αβ.
βY Enter Datapoint simulation mode. This is often used when talking
to the three ITS systems at MIT. If you also convince MIT that you
are a Datapoint, their display programs will work properly from our
display terminals.
αβY Leave Datapoint simulation mode.
βE Begin local echoing. Also attempts to turn off remote echoing.
Different hosts have different echoing conventions. Some hosts
expect to send back echoing, some do not. If you find that what
you type is not being echoed in a reasonable time, you may use this
command to let you see what you are typing. In the DIAL program,
this makes you look like a half duplex terminal, and does not
change the state of remote echoing.
αβE Terminate local echoing. Also attempts to turn on remote echoing.
One does this when each key one types appears twice on the console.
Turning off local echoing will often eliminate one copy of the key.
The DIAL program does not attempt to change the state of remote
echoing.
βO Turn on console typeout. See αβO.
αβO Turn off console typeout. Useful when output is already going to a
file and you don't want to waste the time it takes to type out on
your console as well.
βR Inhibit sending of LF after CR. Normally, when CR is typed, a LF
is invented by the system and CRLF is sent to the foreign host.
This command inhibits sending the LF after the CR.
αβR Enable sending LF after CR. The inverse of the above command.
βK Inhibit duplexing LF after CR. The system normally types a LF out
when you type CR. This command inhibits that. This command is
different in effect from βR, because it alters only what appears on
your screen, not what goes out over the line.
αβK Enable duplexing LF after CR. The inverse of the above command.
⊗X Set escape character. The escape character is normally set to ↑E,
but may be changed by this command. The next character typed is
taken to be the new escape character. This is useful for Teletypes
only.
βI Open input file. This command asks for a file name, then proceeds
to send said file to the foreign host.
αβI Close input file.
βD Open output file. This command asks for a file name, then proceeds
to write everything that comes from the foreign host on this file.
Note that characters you type, or characters from any input file
that is opened, do not go into the output file unless the foreign
host is duplexing them.
αβD Close output file.
βF Open output file like βD, but append the text to an existing file
of the same name. You are only asked for a file name if you have
not previously opened an output file with βD or ⊗F during this
session; if you have already named an output file, the new output
will be appended to that one.
αβF Append to file, like βF, but always asks for a file name.
⊗<form> If there is an output file open, insert a form feed character in
it.
⊗Q Quit. Terminates connection and closes any input or output files
that may be open.
⊗C (TELNET only) Send interrupt. This is the network protocol for
"return to monitor" or equivalent.
βC (DIAL only) Turn on control character mode. In this mode all
characters received from the dataphone are typed on your console.
αβC (DIAL only) Turn off control character mode. In this mode, octal
codes 1-10, 16-37, and 177 are not typed on your console when
received from the dataphone.
βM (PTYJOB only) Enters a mode in which all 9-bit characters you type
are sent unchanged to the PTY except βM, αβM, βZ, and αβZ. (Of
course, if you are in line-at-a-time mode some control characters
are still interpreted by the system line editor.)
αβM (PTYJOB only) Leaves the above mode; meta-characters are again
interpreted as commands to PTYJOB.
⊗Z (PTYJOB only) Quotes the following 9-bit character, so it is sent
to the PTY as is, regardless of the βM mode switch.
TELNET normally sets the echoing and activation conventions to those used by
the particular host in question, but anomalies do occur. For instance, the
foreign host's program may instruct the foreign system to inhibit duplexing,
but that will not inhibit local duplexing. For example, if local echoing is
in effect, an attempt by the remote computer to prevent echoing of a
password will not work.
ARPA Network: The File Transfer Protocol
The FTP command is used to set up a connection to a remote File Transfer
Protocol Server. It takes a host argument like TELNET, and the connection
process is identical. Once the connection is set up, you can enter the
following commands to the FTP program. Each command is a name followed by
arguments as described below. Only the first four letters are significant
(letters beyond four are ignored), and commands may be abbreviated by enough
letters to make the abbreviation unique. Note that file specifications for
remote hosts must follow the format conventions of that host; they are
passed on verbatim by the FTP. In particular, the case of letters may be
significant at some hosts.
Note: FTP command strings sent over the control link to the remote host are
subject to character conversion to conform with standard ASCII, as described
in the discussion of the TELNET program. The processing of file data
depends on the transfer type; see the TYPE command below.
Some of the commands below are named the same as the corresponding command
sent over the network in accordance with the actual File Transfer Protocol;
in some cases alternate names are also defined. Complete information on the
protocol is available in the network document with NIC number 10596,
although there have been several modifications to the protocol since that
document was written. There is also a "new" FTP which is not, so far at
least, actually in use.
We do not implement all of the protocol options. In particular, we accept
only MODE S (stream) and only STRU F (file). Our server accepts MODE and
STRU commands but only with the above arguments; our user does not provide
any way of specifying mode or structure.
When the connection is first established, our user FTP program tries to
negotiate an appropriate type and byte size with the other end's server.
First it sends TYPE I, and then BYTE 36. If the latter is accepted but the
former was not, it sends TYPE I again. (These commands are explained
below.) If these are not accepted, it sends BYTE 8, and if that is
accepted, TYPE A. (All hosts are supposed to accept BYTE 8.) If nothing is
accepted, the program tries again after you give the USER command, in case
the problem is that their server was written by an obnoxious security freak
as at a well-known system in Cambridge, Massachusetts.
The protocol provides an abort function which can be used to stop a transfer
which is in progress. This function can be requested in our FTP user
program by typing ESC I. (From a non-display, type CONTROL-C twice and
REENTER.) This will send the abort command only if there is a transfer in
progress. Many servers do not process the abort sequence, but they should
notice when we close the data connection. You may end up, if you are doing
a STOR, writing an incomplete file on the other system.
In the file transfer commands below, the character = can be used instead of
either ← or → as shown, for the convenience of users at non-Stanford
terminals.
TYPE x x is A, I, L, P, or E, and specifies the representation type for
the data. The uses of the various types are as follows:
TYPE A ASCII type means that the file to be transferred contains text.
The characters in the file will be transferred to or from the SAIL
character set, as explained for TELNET connections, and null
characters will be ignored. This type should be used to transfer
text files to or from a machine with a different text
representation. Text files can be transferred to or from other
PDP-10 systems more efficently using image type (below) if the few
characters which are translated by ASCII translation are unused in
the file, since our character code is almost the same as that of
other PDP-10s. ASCII transfers of local files will also eliminate
the E directory or SOS line numbers, if any.
ASCII is an abbreviation for TYPE A.
TYPE I Image type means that the file is taken as a continuous stream of
bits and sent accordingly. The number of bits sent at a time is
determined by the byte size set with the BYTE command (below). The
most efficient byte size for us is 36, the size of a PDP-10 word.
Any byte size which is a factor of 36 can be used with no
difficulty, if needed to accommodate some other system. Byte sizes
of 8 or 32, however, cause extreme inefficiency because some bytes
are split between two PDP-10 words. If you are retrieving a file
from an 8-bit or 32-bit system, you might want to use TYPE L (local
byte), which uses only the first 32 bits of each PDP-10 word, and
can therefore be implemented using the normal ILDB/IDPB
instructions. However, sending a file to such a system in local
byte type will lose bits 32-35 of each word.
IMAGE is an abbreviation for TYPE I.
TYPE L Local byte type, as explained above, treats the file as normal
PDP-10 bytes of the size specified in a BYTE command. For byte
sizes which are a factor of 36, this is treated exactly the same as
image type (above); for byte size 8 or 32 it uses only bits 0-31 of
each PDP-10 word. Byte size 32 is more efficient than 8 in this
type.
LOCAL is an abbreviation for TYPE L.
TYPE P ASCII print type is treated by our system the same as ASCII type.
This isn't right, but the protocol is not consistent about what to
do. Some people interpret this type as indicating that the file
contains FORTRAN style format control characters.
TYPE E EBCDIC type is not implemented here. It is used for transferring
text files between two IBM systems. To transfer a text file
between here and an IBM system, use TYPE A; the IBM system will
translate between ASCII and their local character code as needed.
TYPE X This command to our FTP user program does not correspond to a real
data type in the protocol. Instead, it is treated as TYPE L here
but tells the other end TYPE I. Use this command if you are
talking to an 8-bit machine and want to use local byte type, but
the other machine does not accept the TYPE L command.
BYTE n n is a (decimal) number indicating the byte size of the network
data connection. Data will be sent from one host to another in
bytes of this size, for image type and local byte type transfers.
ASCII transfers always use a byte size of 8. (That is, each 7-bit
local character code is translated into an 8-bit network ASCII code
and vice versa.) The allowable byte sizes are 8, 32, and any
factor of 36 (1, 2, 3, 4, 6, 9, 12, 18, 36). In general, the
largest byte size which will work is the most efficient. (Note:
the protocol specifies that it is the responsibility of the user
FTP to ensure that 8-bit bytes are used for ASCII transfers.
Accordingly, our user FTP program does not necessarily transmit a
BYTE command as soon as the user types it; instead, the byte size
in the command is remembered for use in binary transfers, and a
BYTE command is sent to the FTP server whenever necessary as the
transfer type changes. Our server FTP program, despite the
protocol, also remembers and restores the non-ASCII byte size in
effect just in case some other user program goofs.)
USER x x is a string which the foreign host will recognize as a valid user
description, user name, or ppn. Not all hosts require a user name.
If the server requires a password to complete the login procedure,
the user program will ask for the password and turn off echoing
while you type it. Not all hosts require a password.
LOGIN x is a synonym for USER.
ACCT x x is an account number. Some hosts may require this for their
billing/accounting purposes.
XCWD x x is a user name, as in the USER command, which will be used as the
default directory for foreign file specifiers; the effect is like
the ALIAS monitor command here. The command name stands for change
working directory.
ALIAS x is a synonym for XCWD.
RETR x←y This command retrieves a file from the foreign host. x is a local
file specifier, and y is a foreign file specifier. The foreign
file y is copied to the local file x. Current settings (or default
values) are used for byte size and representation type. The x←
string is eaten locally, and the RETR y part is transmitted to the
foreign host.
GET x←y is a synonym for RETR.
STOR x→y STOR means store, and this command is the inverse of the RETR
command. A local file is copied to a foreign host.
SEND x→y is a synonym for STOR.
APPE x→y This command will append the local file to the end of the foreign
file.
PICKUP This command is used to resume an interruped multiple file transfer
and is explained further below.
LPPN This command sets the local PPN flag, which affects the
interpretation of single-pathname transfer commands; see the
section on multiple file transfer, below.
RPPN This command clears the local PPN flag, which affects the
interpretation of single-pathname transfer commands; see the
section on multiple file transfer, below. (The command name stands
for remote PPN.
MAIL x x is a user ID (like our PPN). Following this command you may type
in a message which will be mailed to the specified user at the
foreign host. The message must be terminated with a line
containing only a period. The MAIL program (see Appendix 4) is a
better way to send network mail.
MLFL x→y In this case x is a local file specifier, and y is a foreign user
ID. The text of the specified file will be mailed to the specified
user.
LIST x←y y is a foreign pathname, possibly including wildcard terms. The
directory listing of the specified pathname is stored in the local
file x.
DIRECT is a synonym for LIST.
NLST x←y is like LIST, but the listing returned is guaranteed to have no
extraneous information in it, simply one full pathname per line.
This listing is intended to be read by programs rather than humans,
but if you really want it...
HELP This command asks the foreign FTP server to send back a message
indicating what commands it takes, etc.
STAT x If x is omitted, this command asks the FTP server to send back
information regarding the FTP connection, e.g., socket numbers. If
x is a directory name at their host (like our PPN), it lists that
file directory. Note: contrary to protocol, most servers
(including ours) treat a STAT with no argument as a request for a
listing of the directory specified in the USER or XCWD command.
DELE x x is a foreign file specifier. The specified file is deleted at
the foreign host.
RNFR x x is a foreign file specifier. This command is short for rename
from; it must be immediately followed by a RNTO.
RNTO x x is a foreign file specifier. This command completes the file
rename operation started by RNFR. (Some hosts accept * for
wildcard specification in these commands.)
QUOT x x is any character string, which should be an FTP command with
arguments. The string is sent as is over the FTP control link (see
protocol, NIC 10596, for terms). QUOT was included to allow you to
execute commands which are as yet unimplemented here, or which are
nonstandard, specific to some serving host. It will be of little
use for those commands which require some special action by the FTP
program at this end.
BYE Terminate connections with the foreign host and quit.
QUIT is a synonym for BYE.
DISC is a synonym for BYE.
XIND x x is a local file specifier. The file will be read and processed
as FTP commands.
ARPA Network: Multiple File Transfer
The RETR and STOR commands have some provisions for more convenient transfer
of groups of files when similar names are used at both ends. The normal
format of the commands requires the user to specify two file names, one for
our local file system and the other for the remote host's file system. Our
FTP knows enough about the filename syntax for certain systems (mainly the
PDP-10 systems: ITS, TOPS-10, and TENEX) to be able to extract a local
filename from a remote one.
If only one filename is given in a RETR or STOR command, it is considered
the remote file name, and is also scanned to determine a local file name
under the following rules:
1. A "token" in these rules means a string of letters, digits, and the
characters - and @. An asterisk (*) may be used alone as a token to
indicate wildcard file groups, as explained below.
2. A token enclosed in brokets (< and >) is ignored. A token, or two
tokens separated by a comma, enclosed in square brackets ([ and ]) is
ignored in the normal (remote PPN) mode, but see below.
3. Any characters following a semicolon (;) are ignored, except for
the ITS systems at MIT (MIT-AI, MIT-ML, and MIT-DMS), for which the
token preceding the semicolon is ignored.
4. A token followed by a colon (:) is ignored.
5. A single non-ignored token is taken as the local filename. Two
such tokens separated by a period (.) or separated only by one or more
spaces are taken as the local filename and extension. The characters -
and @ in a token are ignored, and the token is truncated to six or
three characters for the local filename or extension. (The leftmost
six or three characters are used.)
6. No punctuation characters may appear in the filename string except
the ones mentioned above. Spaces may be used anywhere except within a
token.
The FTP program notifies the user whenever it determines the local file name
from the remote one in this way, and, in the case of RETR, checks to see if
that file already exists before writing it. If there is such a file, the
user is told so and can choose from these options:
Type <cr> to overwrite the file.
Type <lf> to overwrite the file and to suppress further warnings of
this kind for the remainder of the FTP connection.
Type <alt> to abort the transfer.
Type another filename to write a different local file.
If this syntax is used, the implied local device is DSK and the implied PPN
is the user's alias. (Note that device and PPN fields in the remote file
specification are ignored for local file purposes.) To use a different
device or PPN the local=remote syntax must be used.
A local filename or extension of * either in an explicit local file
specification or as determined from the remote specification is used to
request the transfer of more than one file by a single command. Wildcard
device or PPN is not allowed. If an explicit local file specification is
used, it should agree with the remote file specification in which components
are wild, e.g., the command
RETR *.EXT=<THEIRDIRECTORY>FILE.*
will store any file(s) retrieved with local filename FILE.EXT, probably not
the desired effect. Note also that an explicit local file specification
with no filename or extension implies *.*, so the command
RETR [PRJ,PRG]←REMOTE.FILE
will be treated unnecessarily as a multiple retrieve. This will work but
will involve unnecessary operations. The desired effect can be obtained by
repeating the filename:
RETR REMOTE.FIL[PRJ,PRG]=REMOTE.FILE
but if several such commands are to be used, it is more convenient to set
the local PPN flag using the LPPN command. When this flag is set, a command
of the form
RETR REMOTE.FILE[PRJ,PRG]
is parsed with the text in brackets interpreted as a local PPN and not
passed on to the remote host. That is, rule 2 above is replaced with:
2a. A token enclosed in brokets (< and >) is ignored. A token, or two
tokens separated by a comma, enclosed in square brackets ([ and ]) is
used as the local PPN (it must be a valid one) and is not part of the
remote file name.
The local PPN flag can be reset (returning to remote PPN mode) with the RPPN
command. LPPN and RPPN take no arguments.
In the case of multiple STOR, the selected files are found in the user's
local file directory and a STOR operation is performed for each file found
which matches the template. The remote file specification is scanned for
each operation and the character * is replaced wherever seen by the local
filename or extension. (The first * is replaced by the local filename
unless the character . (or, for ITS hosts only, space) precedes it, in which
case the local extension is used. A second * is replaced by the local
extension.) If the end of the specification line is seen before any
replacement has been done, the local filename and extension are inserted
before the carriage return as if *.* had been seen there, so that a command
like
STOR *.SAI=<DIRECTORY>
will work. In this situation the filename and extension will be separated
by a space for ITS hosts or a dot otherwise. No great effort is made to
ensure the syntactic correctness of the resulting remote file specification;
presumably the remote host will complain if necessary.
For a multiple RETR, the remote file specification is used exactly as typed
in an NLST operation, the results of which are saved by the FTP program to
be used in successive RETR operations. Note that the string used as the
NLST argument starts immediately after the = or ←, if any, or after the
space terminating the RETR or GET command name. In particular, any extra
spaces will be sent to the remote host. The remote file specification in
the typed command is not used to determine local file names; instead, the
rules above are applied to each remote file specification received from the
NLST operation. If an explicit local filename or extension is provided by
the user, it will be used instead of the one derived from the remote
filename, as in the command
GET *.TXT=<IGNORED>*.THIS-NAME-IS-REPLACED-BY-TXT-LOCALLY
Multiple RETR depends on the remote host implementing NLST. At present this
command is implemented in TENEX systems but not ITS. TOPS-10 systems vary
in which commands they implement. Other systems may have a filename syntax
which does not follow the rules above, in which case none of the features in
this section will work.
The PICKUP command can be used to continue a multiple transfer which is
interrupted either by a transient network failure or by a user error (e.g.,
attempt to write into a protected file). The command permits the transfer
to be re-entered along with the (local) name and extension of the first file
actually to be transfered.
Suppose that you are trying to copy a complete directory from another
system, let's say a TENEX, so you give the command
RETR <FOO>*.*
After several files have been retrieved, the connection is broken, while in
the middle of copying <FOO>PARTIALLY.COPIED into PARTIA.COP in your
directory. You re-establish the connection, and type
PICKUP PARTIA.COP
at which point you are invited to repeat the RETR command, which will ignore
all files presented by the remote host until one comes along which matches
the name PARTIA.COP, at which point it begins actually reading files.
If the multiple transfer is stopped because of an error which does not break
the network connection, so you can continue using the same FTP, you can give
the PICKUP command without a filename argument, in which case the last
filename for which a transfer was attempted is used. Also, after the PICKUP
command, you can just type <return> instead of repeating the STOR or RETR
command, and the last such command given will be repeated. The last
transfer must have been a multiple STOR or RETR.
If the PICKUP command line ends with <alt> instead of <return>, the first
file transfered will be the one after the one in the argument (or the one
after the one remembered from the aborted transfer). This is useful for the
case of a transfer which cannot be done because of a protection violation,
when you want to continue the multiple transfer, skipping the protected
file. In a situation like that, you may not know the name of the first file
you want to transfer, but only the name of the last file you don't want to
transfer.
If a PICKUP command is given after a transfer which is not multiple but for
which an implicit local filename was used, e.g.
RETR <FOO>FILENAME.EXTENSION
which implicitly specifies FILENA.EXT as the local name, then the PICKUP
command with no argument can be used to repeat the transfer.
ARPA Network: Connection Error Messages
CONNECTION HAS BEEN CLOSED
This means just what it says. The host has voluntarily broken the
connection for reasons known only to himself.
RESET RECEIVED FROM HOST
The host has sent us a reset command which directs our NCP to break all
connections to this host and clear our tables of everything it knows
(regarding previous connections) about this host. Some hosts will send a
reset the first time you connect to them as standard procedure. In this
case, trying again will succeed. In the more normal case, this means the
host has crashed and just been brought up again.
HOST DEAD
This means that the RFC got to the host's IMP, but was not read from the IMP
within 90 seconds, and the IMP timed out. This generally means the host is
really down.
DATA QUOTA OVERFLOW
The host is not conforming to protocol and has sent us more data than we
allocated him. We are breaking the connection.
END OF FILE
Doesn't occur in normal circumstances.
SOCKET IN USE
Generally happens after an aborted attempt to connect to someone else. This
means the foreign host suddenly sprang to life after TELNET timed out and
sent us an RFC from a different socket than he told us he has now. This
cures itself in a few minutes.
CAN'T CHANGE SOCKETS
SYSTEM ERROR
NO LINKS AVAILABLE
ILLEGAL BYTE SIZE
These all indicate horrible system errors of one form or another and should
not happen.
IMP DEAD
The interface has begun to malfunction, the network control center has
brought the IMP down, or someone here has given the magic UUO that brings
the IMP software down.
HOST NOT RESPONDING
One of the various timeouts inside TELNET or the system went off. TELNET
times out generally when a message is sent to the foreign host which demands
a response and no response was received within a "reasonable" time.
The following messages appear only in conjunction with one of the above
messages and indicates only the point in TELNET where the error occurred.
CAN'T CONNECT TO LOGGER
The error occurred on the initial RFC to get the foreign host's LOGGER.
DIDN'T GET SOCKET NUMBER FROM LOGGER
We exchanged RFC's with the foreign host's LOGGER, but somehow he did not
send us a socket number.
CAN'T CONNECT TO RECEIVE SIDE
We got a socket number from the LOGGER and tried to open a connection on
that socket when the error occurred.
CAN'T CONNECT TO SEND SIDE
We got the socket number and successfully sent an RFC to the receive socket,
but we hit an error when trying to send an RFC to the send socket.
ERROR WHILE WAITING FOR RECEIVE SIDE
This means that we successfully sent RFC's to the send and receive sockets,
but we got an error while waiting for the return RFC on the receive side.
ERROR ON OUTPUT
ERROR ON INPUT
These are given after the connection is established and refer to errors that
occurred while doing output or input.
APPENDIX 9--CARE AND FEEDING OF DEVICES
Care and Feeding of Devices: The Line Printer
On the front of the line printer (LPT) there are several buttons (STOP,
START, TOP OF FORM, MANUAL PRINT, TEST PRINT, OFF, and ON) and several
indicators. The normal state of the line printer is with the START button
lit and all red indicators off. (TOP OF FORM is always lit.)
If the system or the spooler reports that the line printer is hung, check
the following things. If the START button is not lit and there are no red
indicators, push the START button. If there are red indicators, NO PAPER or
PAPER LOW ALERT lit, then you have to put in more paper (or fix the paper
that has gone astray).
To reload the paper, find someone who knows how to do it and watch him, or
do it yourself. Reloading the paper is fairly obvious. The front cover
(which includes a transparent section) is hinged at the top; lift it. The
yoke is the assembly which carries the ribbon, the printing drum (which you
can't see) and a rotating disk at the left side. Open the yoke by finding
two toggle switches (one with each hand) and pushing them both down. These
switches are located to the left and right of the yoke and below it. They
are each labeled CLOSE - OPEN. The yoke will stop when it is fully open.
Find four paper tractors, two above the printing hammers and two below.
Each tractor has a sprocket wheel (which pokes through the holes in the edge
of the paper) and a retainer which holds the paper against the sprocket.
Open all the tractors. If the paper is perforated for 8.5 inch wide pages,
be sure that the perforation is closer to the right side. Push the TOP OF
FORM button before loading the new paper. Use the black arrows to align the
"concave" fold. The concave fold is the one where the two adjacent sheets
are front to front when folded. Close the four paper tractors so the
sprockets fit into the holes in the paper. Close the yoke by finding those
two switches and pressing up on both of them. Push START.
Always restart the fan-fold at the back of the LPT so the paper will stack
properly.
The line printer logic can become hung. This condition is identified by the
MANUAL PRINT light being on continuously. Push MANUAL PRINT and then START
to clear this condition. If that fails, open the door on the right side and
push the black button labeled RESET. If that fails, find a wizard.
If the ALARM STATUS light comes on or if the printer starts making a loud
buzzing noise, shut off the printer (push OFF) and find a wizard. (This
light may come on briefly when the printer is being turned on.)
The YOKE OPEN light comes on when the yoke is open while the paper is being
changed. When the yoke is closed it should go off.
The printer has a ribbon that can be changed too. It is best to watch
someone do it before trying it yourself.
Care and Feeding of Devices: DECtapes
To mount a DECtape, first assign an available drive. Drives are identified
to the system by a rotary switch labeled 1,2,...,8 corresponding to DTA1,
DTA2, etc. Although there are eight numbers on the switches, there are only
four drives, and the system will not recognize DTA5 and up. Generally you
should have no reason to change the normal setting of these switches. Place
your tape on the left reel of the drive and thread the tape over the top of
the tape guide and head assembly. Wind several turns of the tape onto the
takeup reel (turn the reel clockwise). Finally flip the OFF-WRITELOCK-WRITE
switch to WRITE LOCK, or if you want to write, to the WRITE position.
To unload the tape, wind the tape off the takeup reel by the direction
switch (push it to the left and hold it). Turn the drive off when all the
tape is on the left reel. Grasp the reel firmly and pry it off the hub.
Care and Feeding of Devices: Magnetic Tapes
First, decide whether you want to write on the tape or not. If you intend
to write, place one of the plastic write-enable rings in your tape. Place
your tape on the top hub and twist the handle in the hub clockwise to
tighten the reel to the hub. (You can really lose if you don't tighten it
all the way!)
Between the two reels there is a three-position switch labeled START-BRAKES.
Move the switch to the right and hold it there to release the brakes on the
hubs. Unwind the tape until the end of the tape is about a foot from the
floor. Carefully thread the tape into the slot between the reels to the
left of the brake release switch. Wind the tape onto the bottom reel (wind
the reel clockwise). You must be holding the brake release switch to the
right to wind the tape. Wind several feet of tape onto the takeup reel
until you see the metal foil load point marker go by. Then push the brake
release switch to the left (the START position). The tape will hiss and
spin. Hold the switch in START until all motion stops.
There are some control buttons on the top panel. One is labeled (and
lighted) REMOTE-LOCAL; this button toggles. In LOCAL mode, push the REWIND
button. If you're not sure that you have the load point marker on the
takeup reel, push the FORWARD button for several seconds to wind the tape
forward onto the takeup reel until it passes the load point marker, then
REWIND. REWIND positions the tape at load point. Set the drive in REMOTE
and it is all set to use.
Unloading the tape is simple. In LOCAL mode, push the REWIND button. When
the tape finished rewinding, push the brake release switch and manually wind
the tape onto the top reel. Unscrew the hub and remove the reel.
The magnetic tapes are quite finicky and the system software is somewhat
flaky. There are several things that you can do with mag tapes that will
upset the timesharing system and require the intervention of a wizard who
will be angry at you for disturbing his slumber. Never stop your job when
it is operating the tape by typing CALL. Instead, the job can be stopped by
causing the magnetic tape to appear hung. This is done by switching back
and forth between REMOTE and LOCAL until the system stops the job.
There is a reset button for each tape drive located behind the small front
panel below the drive mechanism. This button clears all tape motion
functions in a reasonable way.
Care and Feeding of Devices: Xerox Graphics Printer
The normal condition of the XGP is indicated by the green ON light and the
orange READY light being on. If all indicators are off, the XGP main power
has been shut off inside the cabinet, possibly for some reason.
If the red OFF light is on, push the ON light. This will turn the XGP on,
unless some abnormal condition obtains, such as a paper jam near the cutter.
If the orange STANDBY light is on, look inside the panel above these
indicators. The following is the normal state of the indicators and
switches within:
Knobs: TEST PATTERN: OFF
VERTICAL POSITION: leave this one alone
Lights that should be on:
All POWER SUPPLIES lights
(except 10kv and 2.5kv lights will
be off any time there is some other
problem)
All PROCESS INTERLOCK lights
All CONTROL LOGIC (except IN SYNC)
Lights that should be off:
All SUPERVISORY SIGNALS
FAULT
IN SYNC
Certain conditions of the XGP are indicated by lights being OFF. (If any of
the conditions listed below obtains, the 10kv and 2.5kv power supplies will
shut off.)
FWT Fixed wait timer has not run long enough after
being turned on. Wait 2 minutes.
FUSER The fuser is not hot enough.
If the XGP has just been turned on, wait 5 minutes;
otherwise, reset the over-temperature sensor.
The over-temperature sensor is reset by a small
black button located somewhere in the middle of the
fuser wick assembly.
WEB CLEAN
The drum cleaning web must be replaced.
PAPER OUT
Load more paper.
DRUM The drum assembly has been disengaged.
SWEEP PRESENT
The interface is not providing a sweep signal.
This may mean the connector is unplugged or the
interface turned off.
To load a new roll of paper, open the left door of the XGP. Unscrew the
roll retainer and remove the old roll. Unwind a foot of paper from the old
roll and then cut the paper at the roll. Mount the new roll and tape the
front end of the new roll to paper separated from the old roll. Make the
leading edge of the joint as smooth as possible. Using the MOTOR MANUAL
DRIVE button, advance the splice through the machine until it has passed the
cutter.
If any problems develop in this sequence, find a wizard. Beware: certain
parts of the XGP are hot; you can be painfully burned if you touch the wrong
things.
There is a drum cleaning web that runs out at inconvenient times. There is
a small diagram inside the XGP explaining how to change the web.
Toner is icky black stuff that makes the marks on the paper. It gets used
up and runs out too. Someone is supposed to check the toner every day and
add more if it gets too low. If the XGP runs out of toner, the pages will
start getting lighter, there will be occasional black splotches on the
paper, and frequent sand-like particles will be found embedded in the paper.
Toner is checked through the access panel in the back of the XGP. There is
a lever there that adjusts the rate at which toner is used on the paper.
This lever must be placed either at the lightest (inner) setting or one
setting darker. Never, never set it anywhere else.
If you don't like the copy quality, complain to a wizard. Don't adjust
things yourself.
Care and Feeding of Devices: User Disk Pack
One or more of the drives in the Ampex disk system are usually reserved for
private disk packs. The drives so designated will be labeled USER PACK.
Use the command ASSIGN UDPn to assign a particular drive before you mount
your pack.
Assuming there is no pack mounted already, you can mount your pack by
following this sequence. Make sure there is nothing on top of the clear
door of the drive you are using. Then push the OPEN DOOR switch and the
door will swing up. Hold your pack by the handle on its top cover and
remove the bottom cover from the pack by squeezing the two handles on the
bottom together. Place the bottom cover on top of the back part of the
drive cabinet. Place the pack (still in the top cover) in the drive unit.
Turn the handle clockwise. It will be somewhat hard to turn. Turn until it
stops. Carefully remove the top cover from the pack and place it on the
bottom cover. Make sure the two covers are aligned to keep dust out of the
enclosed space. Turn the top cover so the label on it is visible from the
front of the drive. Gently push the drive cover down and close it--it will
lock. Push the START-STOP switch to START; the pack will begin to spin.
When the green ready light comes on, the pack can be used. There is a
READ ONLY-R/W switch on the drive; put this switch in the READ ONLY position
if you do not intend to write anything on the pack and put it in R/W
(Read/Write) if you do intend to write on the pack.
To unload the pack, push the START-STOP switch to STOP. When the pack comes
to a stop, press the OPEN DOOR switch; the door will swing up. Take the top
cover whose label corresponds to the label on the pack and place it
carefully over the pack. Turn the handle counter-clockwise until it moves
freely. Lift the pack out of the drive. Place the bottom cover under the
pack and press it on until it latches. The covers help keep dust off the
packs. Return the pack to the storage rack. Leave the label facing
outwards. Gently close the cover on the drive until it locks.
Occasionally, there may be no drives available for user disk packs. If this
happens, a wizard will explain why. Never touch a disk drive unit unless
you have it assigned! Never touch anything but a drive which is marked USER
PACK! If you are confused by something you see, ask about it before you
touch!
Care and Feeding of Devices: Core Storage
A hardware-detected parity error in core being used by a user program will
stop that program but will generally not hurt the system otherwise. (There
will be a brief period, while the system is finding the error, during which
it will not respond to characters typed at terminals.) A parity error in
the monitor itself will probably crash the system. It is possible for a
memory error to go undetected if two bits are incorrect in the same word,
but this should be uncommon. If a piece of hardware fails reliably, the
parity error rate may become too high to allow operation of the system.
Another possible problem besides parity errors is a memory stop. This is
usually a temporary problem. It will stop the timesharing system, but it is
possible to continue from a memory stop without reloading.
Memory errors have never, never been fixed by software means. In
particular, reloading the system never solves the underlying problem. If
the system becomes unusable because of these errors, a wizard should be
found.
Memories stop working entirely due to hardware logic bugs. There is a
MEMORY STOP light on the PDP-10 console, which usually indicates this
problem. Usually the memory can be reset and the system continued. If
possible, find a wizard to fix it. Otherwise, read on. A hung memory can
be identified by:
DEC MG10:AW light off
new Ampex: UA light off
new Suppes: OK light off
Push stop on the PDP-6 and the PDP-10. Reset the memory by:
DEC MG10:Push RESET toggle switch (inside the front panel)
new Ampex: Push RESET (the big green-blue button) on Core 0 and Core 1
simultaneously, or Core 2 and Core 3 simultaneously.
new Suppes: Push, in this order, the three buttons: STOP, CLEAR, CONT.
These are located on the little box on top of the memory.
Once the memory is reset, the computers have to be convinced that nothing
bad happened. To do this on the PDP-10, the USER MODE light on the console
must be off. If it is on, first turn on the SINGLE INSTRUCTION switch on
the console, then push CONTINUE. This should turn off the USER MODE light.
Then turn off the SINGLE INSTRUCTION switch. When the USER MODE light is
off, enter 700200 010003 in the data switches and push the EXECUTE key. If
the MEMORY STOP light on the PDP-6 is on, follow the same procedure as on
the PDP-10 with these exceptions: Instead of a USER MODE light on the
console, the PDP-6 has an EXEC MODE light at the top of the second bay to
the left of the console; this light must be on for the execute. Also, there
is no SINGLE INSTRUCTION switch on the PDP-6; instead, while the INSTRUCTION
STOP switch is down, push INSTRUCTION CONTINUE once. Finally, push CONTINUE
on both machines.
APPENDIX 10--RELOADING THE SYSTEM
If the system crashes or refuses to run jobs normally, it may need to be
reloaded. If possible, find a system programmer, who will try to find out
what the trouble is. If there are no system programmers around, look at the
CTY (the PDP-10 console Teletype) to see if instructions have been typed out
about what to do to fix the current problem. If no instructions have been
typed out, check the MEMORY STOP light on the PDP-10 console. If this light
is on, look up the memory stop procedure just above in the Core Storage
section of Appendix 9. Otherwise, read on.
First, write in the log your name and the reason that the system is being
reloaded.
Find the paper tape labeled DSKDMP BOOT RIM and mount it in the paper tape
reader. (It may be mounted already.) Push the console keys RESET and
READ IN. After the paper tape has been read in, the CTY should type out:
DSKDMP
*
If the CTY fails to say "DSKDMP", try reading in the paper tape again.
After the CTY has typed out "DSKDMP" and an asterisk, type in:
SYSTEM
(ended with a carriage return). If you're lucky, the system will load
itself without further hassle.
If reloading fails to work and the PDP-6 is running, try again after pushing
INSTRUCTION STOP on the PDP-6.
When reloading is finished and the system is about to come up, if the PDP-6
is stopped, it must be started by setting 204 in its address switches and
pushing the keys INSTRUCTION STOP, IO RESET, and START.
If the system is being loaded without the PDP-6, then the current date and
time must be typed in at the CTY during the reloading sequence. Be sure you
supply the correct date and time!
If loading with DSKDMP fails repeatedly, find the DECtape with the current
system. The DECtape will be labeled with the system name and date and will
usually already be mounted on some DECtape drive. Find the paper tape
labeled 256K TENDMP, and load it into the paper tape reader on the PDP-10.
Push INSTRUCTION STOP on the PDP-6. Press RESET and READ IN on the PDP-10.
The paper tape will be read, and the CTY will type carriage return and line
feed. Type n$ where n is the number of the DECtape drive and $ is an alt
mode. The DECtape should spin for a while, then it will stop and the CTY
will type crlf again. Type S and carriage return. The DECtape will spin
again for a while, and then the CTY will type out a message saying start the
PDP-6 at 204. Do that by setting 204 in the address switches on the PDP-6
and pushing the PDP-6 keys IO RESET and START. At that point the system
should come up.
Note: For the system to work, the following switches located inside the
second door to the left of the PDP-10 console must be in the indicated
positions: JSYS ENB and MAPAC ENB off, MA TRP OFFSET on.
APPENDIX 11--MONITOR ERROR MESSAGES
This appendix lists the error messages typed by the monitor itself (not by
other system programs) with explanations for some of them. Many have to do
with errors induced by UUOs in your program, and these are explained in the
UUO Manual, in the writeup of the UUO involved. The list is alphabetical;
messages which start with a variable part are sorted under the first fixed
word.
Note: Several of these messages are of the form XXX at user <address>. It
is possible in some of these cases to get XXX at exec <address> instead,
which means that the offending instruction was not in your program, but in
the monitor, which was trying to do something on your behalf when it
happened. If this happens repeatably, or if the message is shortly followed
by a system crash, tell a system programmer.
Address check for Device <dev>
Your program was trying to use the indicated device, and supplied
a buffer address, dump mode command address, or other address
which is outside the bounds of your core image. For dump mode IO,
the command list is too long or contains a loop, or the address of
a word in the command list is illegal, or the address pointed to
by a word in the command list is illegal (possibly because it
points into a write-protected upper segment). In buffered mode
IO, the buffer header address is illegal or the buffers themselves
are improperly formed.
Address out of bounds, UUO at user <address>
Your program executed a UUO which takes as an argument an address
in your core image, and the address was out of bounds. The
address given is that of the offending UUO.
AFTER INPUT, DEVICE DAC CANNOT DO OUTPUT
AFTER OUTPUT, DEVICE DAC CANNOT DO INPUT
Your program used the DAC (digital-to-analog and analog-to-digital
converter) in one direction (input or output) and then tried to do
IO in the other direction. To change IO direction on the DAC, you
must first RELEASE it and then INIT it again.
Already assigned to job <job number>
You typed an ASSIGN command, and the device you wanted is in use.
<terminal> already attached
You typed an ATTACH command, and the job you are trying to attach
is already attached to a terminal.
Already in use - can't change format
You gave an ASSIGN PUBLIC or ASSIGN PRIVATE command for a UDP
which was already assigned as OLD, or vice versa. The UDP will be
assigned to your job in the same mode as before.
Already in use - can't make private
You gave an ASSIGN PRIVATE or ASSIGN OLD command for a UDP which
was already in use by another job. The UDP will be assigned to
your job as PUBLIC.
? ambiguous job name
Your program gave a MAIL UUO which refers to another job by name,
and there are two or more jobs with that name. If you type
CONTINUE, the UUO will be tried again.
ATTEMPT TO INITIATE SPW JOB WITH ONE ALREADY RUNNING
Your program has a spacewar module active and is trying to start
another one on the same processor.
Bad directory for Device <dev>
The device is a DECtape. This might mean that the tape is in a
format not recognized by the monitor. (Our system uses a
different directory format from the PDP-10 standard.) It can also
happen if you try to write on a write-locked DECtape.
BAD RETRIEVAL
The pointers to your file on the disk are invalid. See a system
programmer to try to fix it.
Buffer too large for Device <dev>; UUO at user <address>
Your program is trying to use an I/O device for which there is a
limit on the allowable user buffer size, which you exceeded. The
UUO Manual explains the rules for each device.
busy
You gave a TALK command addressed to a terminal which is in user
mode or has characters in its input buffer.
Can't attach device
You gave the privileged ATTACH <device> command and don't have the
DEV privilege.
Can't Attach job
You gave an attach command from a remote terminal to attach a job
you are not permitted to attach. From such a terminal, you must
be logged in to attach another job. If you want to re-attach a
job which you have detached, log in, attach it, and kill your new
job with the KILL command.
<dev> can't be reassigned
You gave a REASSIGN command in which the device to be reassigned
was your own terminal. This is illegal.
Can't continue
You typed CONTINUE after one of the other error messages came out,
and you are not allowed to continue the job after that error. You
also cannot continue a job after a SAVE or SSAVE.
Can't detach device
You gave the privileged DETACH <device> command and don't have the
DEV privilege.
CAN'T ENTER-RENAME MFD
If you get this message, see a system programmer, who will eat
you.
Can't LOCK with segment
Your program, which has an upper segment, gave a LOCK UUO. This
is illegal.
CAN'T TERMINATE SOMEONE ELSE'S SOCKET!
Your program is using the ARPA network and tried to terminate a
connection which does not belong to it.
Cons trap at user <address>
You can only get this one from a program running on the PDP-6,
which means it must be a spacewar module. The CONS instruction is
a nonstandard addition to our PDP-6 installed for the benefit of
LISP people. It sometimes gives this message. The address is
that of the CONS which failed.
CORE DEADLOCK.
The monitor's free storage area has expanded enough so that user
core is no longer big enough for your core image. This might fix
itself if you wait a while, but if you must run immense programs
your best bet is to come back at 4am.
Couldn't get you a segment. Will try to let you win with SETPR2.
You tried running a program with an upper segment. The program
was loaded into core, but there is no room in the monitor's job
tables to make an entry for the upper segment. The monitor will
try to simulate an upper segment for you by leaving the upper
segment code in your lower segment, but simulating upper-segment
relocation by the SETPR2 UUO mechanism. This ought to work ok for
most two-segment programs, but just in case it doesn't the monitor
types this warning. If you are writing a two-segment program,
consult the UUO Manual or a system programmer for advice.
Couldn't unpurify upper. Continue to try anyway
You typed a DDT command. JOBDDT in your core image points to an
address in your upper segment as the DDT starting address, and
your upper segment is write protected. DDT and RAID both contain
instructions which modify themselves. The monitor tries to solve
this by unprotecting your upper segment. If you are sharing the
segment with other users, it has to load a new copy for you so the
other users still have a protected one. This might fail, for
example, because there are no job slots available. All highly
unlikely.
<dev> deassigned, but still INITed
You gave a DEASSIGN command for a device which is in use by your
program. This is all OK; the monitor is merely reminding you that
you still control the device. The FINISH command will release it,
if that is what you want.
Detached from system
You gave the PJOB <dev> command and the device you specified has
been made unavailable to users, perhaps because it is not working.
Device <dev> isn't ready
The device is somehow disabled. If it's a mag tape, it may be in
LOCAL mode. The line printer could be out of paper. You can fix
the problem and type CONTINUE.
Device <dev> MAY BE UNLOADED
You gave a DEASSIGN command for a UDP and no one is now using it
so you can unload the pack.
? Device <dev> not available
The device specified in a RUN, R, GET, SAVE, or SSAVE command was
unavailable to your job.
Device <dev> STILL IN USE - DON'T UNLOAD
You gave a DEASSIGN command for a UDP which is still being used by
someone.
DISK IS FULL!
Your program is trying to write a file on the disk, and there is
no room. If you delete some files (using another job!), you can
type CONTINUE and the file will be written.
DISK TRANSMISSION ERROR
This is a disk failure. See a system programmer.
Enter failed.
The filename you typed to "Enter needed." (see below) didn't work,
probably because of a protection failure.
? Enter failed
The file specified in a SAVE or SSAVE command cannot be written,
probably because of a protection failure.
Enter needed. Please type file name:
Your program tried to write on the disk or a DECtape without doing
an ENTER UUO to specify the filename. You are given the
opportunity to specify the file to be used.
ERROR IN DSKSER
Horrible error in the monitor disk service routine. See a system
programmer.
? Error in job <job number>
This message will appear along with one of the others. The only
reason you might need it is if you are running more than one job
at once (through a PTY, for example).
Error in monitor
This message is usually followed closely by a system crash. Call
a systems programmer.
File already exists. Is it OK to delete it?
The filename you typed in response to "Enter needed." (see above)
already exists. If you type Y (and RETURN), it will be replaced
with the new output; otherwise, you will be asked for another
name.
Finish what?
You typed a FINISH command with an argument and weren't using that
device (or there is no such device).
Gotcha!
This is not an error. You get it when you are in a device wait
queue and your turn for the device comes.
Halt at user <address>
Your program executed a JRST 4, instruction. You are allowed to
CONTINUE the job after this message. The address typed is the
address containing the HALT instruction, not its effective
address. If you type CONTINUE, the program will be continued at
the address specified in the effective address of the JRST 4,.
Hung Device <dev>
The device did not respond properly to your attempt to use it in
some predetermined time. This probably means that the device is
unusable for some hardware reason.
HUNG DEVICE: PDP-6
Your program is trying to run a spacewar module on the PDP-6,
which is not responding. Get a system programmer to fix it.
I-level UUO when not at I-level, UUO at user <address>
Your program tried to execute a UUO which is only allowed in a
user interrupt routine, when it was not servicing an interrupt.
ILL MEM REF at user <address>
Your program tried to read or write an address greater than the
size of its core image. The offending instruction is at the
address typed, or possibly at one beyond that address (e.g., if
the error occurred on a non-final write cycle of a BLT
instruction).
Illegal attach loop
Your program is typing into a pseudo-teletype and gave an ATTACH
command trying to attach its controlling job. In particular,
people using the system via the ARPA network get this if they try
to attach to their TELNET server job. (You also get it if you try
to attach the job controlling the PTY controlling the job
controlling you, etc.) Typed on the PTY.
Illegal data mode for Device <dev>
Your program has tried to use an I/O device in an undefined way,
e.g., binary I/O to a terminal. The UUO Manual discusses data
modes for each device.
ILLEGAL DD CHANNEL.
Your program is trying to use a Data Disc channel to which it is
not allowed access.
ILLEGAL FORMAT DUMP MODE COMMAND LIST
Your program is trying to do dump mode I/O incorrectly. See the
UUO Manual.
Illegal I-level call, UUO at user <address>
Your program tried to execute at interrupt level a UUO which is
not legal at interrupt level.
ILLEGAL INSTR. ADDRESS.
This message refers to instructions in a display program your job
is running.
Illegal instruction at user <address>
Your program executed an undefined instruction or one which is not
allowed in user mode.
Illegal old-style access to new format UDP. UUO at user <ADDRESS>
You have given an ASSIGN OLD command for a UDP, and mounted a pack
which has been formatted for file-structured use, and your program
tried to write on the pack (gave an ENTER UUO).
ILLEGAL PAGE SIZE SPEC.
Your program is trying to adjust the page printer geometry
incorrectly on a display terminal.
ILLEGAL PARAMETER FOR FAST BAND CALL, UUO at user <address>
Your program gave a UUO to use a Librascope fast band but some
argument to the UUO was invalid.
ILLEGAL PIECE OF PAPER
Your program gave a PPIOT UUO which specified a piece of paper
number greater than 17 (octal). See the UUO Manual.
Illegal protection code
You gave a SETUWP or CLRUWP command with an argument greater than
1000 octal.
ILLEGAL SPEED PARAMETER FOR Device <dev>; UUO at user <address>
Your program tried to use the DAC (digital-to-analog and
analog-to-digital converter) but specified an illegal speed.
Illegal UUO at user <address>
Your program executed a UUO which the monitor does not recognize.
(Probably you are trying to execute data.)
IMP IO WITHOUT REQUEST FOR CONNECTION
Your program tried to IMP input or output without first
establishing a connection to some host.
in use
You gave the FLUSH command and the specified terminal is in use.
Input Device <dev> cannot do output
Your program has done something silly like trying to write on the
paper tape reader.
Input Device <dev> has no input buffer header, UUO at user <address>
Your program executed an input UUO in buffered mode, and had not
provided an input buffer header when it opened the device.
Interrupt address out of bounds
Your program has enabled user interrupts and specified an
interrupt address which is not in your core image.
Interrupt enablings conflict, UUO at user <address>
Your program tried to enable both old-style and new-style
interrupts in a conflicting manner.
Intgen of non-enabled interrupt, UUO at user <address>
Your program tried to use the INTGEN UUO to send itself or another
job an interrupt for which the job was not enabled.
IO to unassigned channel at user <address>
Your program executed an I/O UUO specifying an I/O channel which
was not opened. See the UUO Manual about channels and I/O.
<dev> is busy, will you wait?
Your program tried to open a device which another job is using.
If you say Y (then RETURN), your job is placed in a queue of jobs
waiting for the device, and will be continued automatically when
it's your turn. If you say N, you are then asked "Would you do IO
to the disk instead?" and can again say Y or N. If you say Y, you
may be asked for a filename (if your program does input or output
on that channel without specifying a name). If you say N again,
your program gets a failure return on the INIT or OPEN UUO.
JMS NOT LEGAL; USE JSR.
Your program set up a III display program with the forbidden JMS
instruction in it. See the UUO Manual.
Job capacity exceeded
The maximum allowable number of users are already logged in. Try
again later.
LINKS STILL ACTIVE
Your program tried to re-initialize the system IMP tables in order
to bring the IMP back up and someone else is still using the IMP.
Logical name already in use, <dev> Assigned
You typed an ASSIGN command with a logical device name argument
which you were already using for another device. The device you
requested is assigned to your job, but the logical name still
refers to the old device.
Login please
You typed a command which requires that you log in first.
Lookup failed.
The filename you typed in response to "Lookup needed." (see below)
could not be read. (It doesn't exist or is read protected against
you.) You get to type in another name.
Lookup needed. Please type file name:
Your program tried to read from the disk or a DECtape without
specifying a file by executing a LOOKUP UUO. You are given the
chance to specify the file to read.
MESSAGE LENGTH NOT CONSISTENT WITH BYTE SIZE, UUO at user <address>
Your program is doing input from the IMP and some host sent you a
message with an explicit length greater than the actual amount of
message received.
Must assign Device <dev>; UUO at user <address>
Your program tried to INIT a UDP which hadn't been ASSIGNed. You
must give the ASSIGN command to set the mode of pack to be used
before you can use a UDP.
NEED ENTER BEFORE OUTPUT
NEED LOOKUP BEFORE INPUT
You get these messages if your program opens a directory device,
closes a file, and then tries to do input or output on that
channel without another LOOKUP or ENTER.
No <dev>'s available
You typed an ASSIGN command with a generic device name (e.g.,
MTA), and all of them are in use.
No core assigned
You typed a command which refers to your core image (e.g., DE or
START), and you don't have a core image.
No DDT
You typed a DDT command, and your core image does not contain DDT
or RAID (JOBDDT zero).
No Reenter address
You gave a REENTER command and your program has no REENTER address
(JOBREN is zero).
No starting address
You gave a START, R, or RUN command and the program has no
starting address (JOBSA zero).
No such device
You typed something the monitor did not recognize when a device
name was required.
No such job
You gave an ATTACH or kill command with a nonexistent job number.
No such privilege
The privilege name specified in an ENABLE or DISABLE command does
not exist.
No upper segment
You typed a SETUWP or CLRUWP command and your core image does not
include an upper segment.
? Non-ex job name or number
Your program gave a MAIL UUO addressed to a nonexistent job. If
you type CONTINUE, the UUO will be tried again.
Non ex mem at user <address>
This can't happen, it says here. It means that your program tried
to address a word of core storage which does not exist. However,
we have the maximum possible amount of core, so there shouldn't be
any nonexistent addresses. Possibly a hardware failure could
cause this. (If you are running a spacewar module which resets
its relocation and protection registers when for some reason we
are running with less than the full amount of core, you can get
this legitimately.)
? not a dump file
The file specified in a RUN, R, or GET command is not in dump file
format.
NOT A NEW FORMAT UDP
You have typed an ASSIGN PUBLIC or ASSIGN PRIVATE command for a
UDP, and mounted a pack which has not been formatted for
file-structured use. The error is not detected until your program
tries to perform some operation on the UDP. See a system
programmer about formatting your pack.
Not a TTY
You gave the FLUSH command with an argument which is not the name
of a terminal.
Not enough core
You typed a CORE command with an argument greater than the maximum
core available to a user job.
? <filename> not found
The file specified in a RUN, R, or GET command was not found. If
the problem is not a spelling error, make sure you are not
aliased.
Not one of your jobs
You typed a KILL command with a job number not belonging to your
programmer name.
Out of bounds
Some numeric argument to a monitor command wasn't right. This
could be an address not in your core image in a DE or E command.
Output Device <dev> cannot do input
Your program has tried to do something silly like read the line
printer.
Output Device <dev> has no output buffer header, UUO at user <address>
Your program executed an output UUO in buffered mode and did not
provide a buffer header when it opened the device.
? <n> pages of core needed
You tried to run a program and asked for less core than it needs
to run or for more core than a single job can have. In either
case, <n> is the minimum amount of core (in 512-word pages) needed
to run the program, unless the program was on a mag tape, in which
case <n> is the amount of core you asked for and is more than you
can have.
Parity error in your core image at location <address>
Parity error in your upper segment at location <address>
A hardware failure has invalidated the contents of the indicated
address in your core image. The safest thing to do in this case
is to restart with a fresh copy of your program. If you were
running for a long time and are willing to risk continuing, you
can type CONTINUE. You can also try to fix the bad location with
DDT or RAID, if present, or with the DE and E commands.
PC exceeds mem bounds at user <address>
Your program tried to jump to an address outside the range of your
core image. The message, unfortunately, tells you the illegal
address rather than the address of the jump instruction.
Pdl ov at user <address>
Your program had a pushdown list overflow. The address typed is
the effective address of a PUSHJ, the return address for POPJ, or
the address following a PUSH or POP.
PIECE OF GLASS TOO BIG
Your program is trying to run a display program which is too big
for the monitor to handle. Sorry.
Please Kjob or Detach
You gave a LOGIN command when you were already logged in.
Please type ↑C first
You started your program with CSTART or CCONTINUE, leaving your
terminal in monitor mode, and then typed a command which affects
your core image. Such commands cannot be processed while the
program is running. Type CALL and try again.
PPN mismatch
You typed an ATTACH command, and the job number and PPN arguments
did not agree.
Protection failure
You typed a SETUWP or CLRUWP command, and are not permitted to
change the write protection of your core image's upper segment.
? SAVE/GET IO error
You got an IO error from trying to save or get a core image. Try
again. If it still fails, ask a wizard for help.
Spacewar lossage - <error>
The error indicated can be "Ill mem ref", "PC exceeds mem bounds",
"Non ex mem", "Pdl ov", "Cons trap", or "Time out". It means that
your job started a spacewar module (see the UUO Manual), which
caused the error. "Time out" means that your spacewar module did
not have the timeout-suppression bit set and used up the maximum
amount of uninterrupted time allowed in a single run. For the
other errors, see the particular error message in this list for an
explanation.
SWAP READ ERROR
Your job was swapped out of core, and when the monitor tried to
read it back in, there was a hardware error on the swapping disk.
Your core image is probably gone forever. If you really need it
badly, you might be able to persuade a system programmer to try to
recover it for you, but even then there's not much chance. Start
over.
Too few arguments
This error message can be typed by several different monitor
commands and should be self-explanatory.
TOTAL DPY BUFFER SPACE EXCEEDED.
Your program is trying to run a III display program, and there is
no more room in your allocation of display buffer space.
UDP OFFLINE OR WRITE LOCKED
Your program has tried to perform some operation on a UDP, and
there is no pack mounted, or the drive is not turned on, or it
does not have its ID plug inserted in the front panel, or it is
switched to read-only and your program tried to write on it.
(Upper not saved)
You gave a SAVE command and you have an upper segment; SAVE does
not include the upper segment in the dump file written. To have
the upper saved also, use the SSAVE command. (You can give the
SSAVE command after getting this message from SAVE if you decide
you want the upper saved too.)
Use "KJOB" to log yourself out
You typed a KILL command with your own job number as the argument.
$$ USER DPY ERROR AT <address>
This message comes along with another which explains the error in
your display program. The address is that of the offending
instruction.
User Interrupt-Level <error>
The error can be "ill mem ref", "NXM", or "pdl ov". See the
associated message in this list for an explanation (see Non ex mem
for NXM). The error happened in your program's interrupt routine.
If it says "CH3 error" instead of one of the above, see a system
programmer.
User Interrupt-Level attempt to schedule, UUO at user <address>
Your program's interrupt routine executed a UUO which would put it
in a wait state. User interrupt routines aren't allowed to do
that. See the UUO Manual.
User Interrupt-Level timeout
Your program's user interrupt routine has run longer than the
maximum time allowed. (No other user can run while an interrupt
routine is in progress, which is why they are limited in time.
See the UUO Manual about interrupts.)
UUO at user <address>
This line appears with certain other messages. It tells you the
location in your core image of the instruction which caused the
error.
<dev> wasn't assigned
You gave a DEASSIGN or REASSIGN command and hadn't assigned the
device.
wasn't detached
You gave the privileged ATTACH <device> command and have the
privilege, but the device wasn't detached.
YOU ARE LOCKED OUT OF CORE!
The amount of user core available has been reduced by other jobs
starting spacewar modules (thereby being locked in core). There
is not enough room to fit your core image. This condition may fix
itself quickly; the message does not return you to monitor mode,
but will keep appearing every so often until you fit again. If
you have a really huge program, run it late at night (e.g., 4am).
You can't have it
You typed an ENABLE command specifying a privilege name, and
neither the privilege you specified nor the PRI privilege is in
the list associated with your PPN; or the privilege is one which
is not permitted to any user (XGP or SSL).
APPENDIX 12--BIBLIOGRAPHY
This appendix lists various other sources of information about system
programs. Some of these are available on the disk, some are printed. Some
programs, which were not written here but came from DEC, are documented in
DEC manuals. Other programs, documented on the disk, are not included here;
only the major processors are listed. The files AIMS[BIB,DOC],
AIMS.OLD[BIB,DOC], SAILON[BIB,DOC], and PRUNE.DAT[UP,DOC] list other program
documentation which may be of interest. A convention used in naming [S,DOC]
and [UP,DOC] files is that the filename is the name of the program being
documented, and the extension is the programmer name of the author. An
update file for a program's documentation will have a file name matching the
program name with the extension being .UPD.
SAILONs (Stanford Artificial Intelligence Laboratory Operating Notes) and
AIMs (Artificial Intelligence Memos) are generally available in printed form
from the project secretaries. Try this before making your own listing.
EDITORS:
E E.ALS[UP,DOC] is the manual for the display editor.
SOS SOS.LES[S,DOC], SAILON 50.3, is the reference manual for SOS.
TECO This is a DEC program. See the DECsystem 10 Users Handbook.
LANGUAGE PROCESSORS:
FAIL FAIL.REG[AIM,DOC], AIM 226, is the reference manual.
SAIL SAIL.KVL[AIM,DOC], AIM 204. This is a long manual; try to get
the printed version instead of spooling a copy.
MACRO This is a DEC program. See the DECsystem 10 Assembly Language
Handbook.
F40 This is the DEC FORTRAN. See the DECsystem 10 Mathematical
Languages Handbook.
LISP Our version of LISP, LISP 1.6, is described in LISP.WD[S,DOC],
SAILON 28.7.
PUB PUB.TES[S,DOC], SAILON 70, describes the PUB Document Compiler.
See also PUB.UPD[S,DOC] for updates.
DEBUGGERS:
RAID The display terminal debugger is described in RAID.PMP[S,DOC],
SAILON 58.1.
DDT The Teletype debugger is a DEC program; see the DECsystem 10
Assembly Language Handbook. See DDT.REG[UP,DOC] for a quick
summary.
BAIL The SAIL program debugger is described in BAIL.DOC[DOC,AIL], AIM
270.
APPENDIX 13--STANFORD CHARACTER SET
The Stanford ASCII character set is displayed in the following table. The
three digit octal code for a character is composed of the number at the left
of its row plus the digit at the top of its column. For example, the code
for "A" is 100+1 or 101.
ASCII 0 1 2 3 4 5 6 7
↓↓↓
000 NUL ↓ α β ∧ ¬ ε π
010 λ TAB LF VT FF CR ∞ ∂
SIXBIT 020 ⊂ ⊃ ∩ ∪ ∀ ∃ ⊗ ↔
↓↓ 030 _ → ~ ≠ ≤ ≥ ≡ ∨
00 040 SP ! " # $ % & '
10 050 ( ) * + , - . /
20 060 0 1 2 3 4 5 6 7
30 070 8 9 : ; < = > ?
40 100 @ A B C D E F G
50 110 H I J K L M N O
60 120 P Q R S T U V W
70 130 X Y Z [ \ ] ↑ ←
140 ` a b c d e f g
150 h i j k l m n o
160 p q r s t u v w
170 x y z { | ALT } BS
The tables below display the standard ASCII codes, and the SOS
representation used at Stanford for entering the full Stanford ASCII
character set from Teletypes or similar terminals with restricted character
sets. The obscure names for the ASCII codes below 40 are listed just for
confusion. Notes: "DEL" (177) is the ASCII delete. "ESC" (33) is their alt
mode. Codes 136 and 137 have two different interpretations, as shown below.
The SOS representation is so called because it is provided by SOS, the
Teletype editor. Certain other programs also know about this
representation, but it is not built into the monitor in any way. See also
Section 3 for special system treatment of certain characters from Teletypes
and other non-displays.
Standard ASCII
0 1 2 3 4 5 6 7
000 NUL SOH STX ETX EOT ENQ ACK BEL
010 BS TAB LF VT FF CR SO SI
020 DLE DC1 DC2 DC3 DC4 NAK SYN ETB
030 CAN EM SUB ESC FS GS RS US
040 SP ! " # $ % & '
050 ( ) * + , - . /
060 0 1 2 3 4 5 6 7
070 8 9 : ; < = > ?
100 @ A B C D E F G
110 H I J K L M N O
120 P Q R S T U V W
130 X Y Z [ \ ] ∧↑ _←
140 ` a b c d e f g
150 h i j k l m n o
160 p q r s t u v w
170 x y z { | } ~ DEL
SOS Representation
0 1 2 3 4 5 6 7
000 --- ?! ?" ?# ?$ ?% ?& ?'
010 ?( TAB LF VT FF CR ?) ?*
020 ?+ ?, ?- ?. ?/ ?0 ?1 ?2
030 ?9 ?6 ?4 ?= ?< ?> ?7 ?8
040 SP ! " # $ % & '
050 ( ) * + , - . /
060 0 1 2 3 4 5 6 7
070 8 9 : ; < = > ??
100 @ A B C D E F G
110 H I J K L M N O
120 P Q R S T U V W
130 X Y Z [ \ ] ↑ ←
140 ?@ ?A ?B ?C ?D ?E ?F ?G
150 ?H ?I ?J ?K ?L ?M ?N ?O
160 ?P ?Q ?R ?S ?T ?U ?V ?W
170 ?X ?Y ?Z ?[ ?: ?3 ?] BS
INDEX
activation 17
activation character 16, 18
add channel 21
add piece of glass 22
addresses, core 5, 11
ADVANCE command 106
ALGOL 5
alias 19, 29, 31, 32, 35, 45
ALIAS (in WHO display) 42
ALIAS (in WHO line) 19
ALIAS command 32
ALL switch in COPY 72
ALT 17, 24
ALT key 15
alt mode 15, 132
ALT MODE, Teletype 24
APPEND switch in MAIL 88
arguments 7
ARPA network 8, 24, 46, 91, 93, 115
ARPA switch in MAIL 88
ARROW (in TTY command) 24
ARROW (LOGIN option) 34
ASCII 15, 117, 132
ASCII switch in COPY 72
ASK switch in COPY 72
ASK switch in SPOOL 75
assembly language 5
ASSIGN command 8, 30
Associated Press 34, 46
ATT privilege 29, 47
ATTACH command 29, 35, 47
AUDIO (LOGIN option) 34
audio switch 23, 34
authorized users 9
backspace 15
BACKSPACE command 106
backspace, deleting 16
backspace, non-deleting 16
BAIL 48, 131
BAIL switch in SNAIL 58, 65
bams 107
BATCH command 100
BEEP 23
bibliography 131
BINARY switch in COPY 72
binary, relocatable see relocatable binary
BLOCKED switch in COPY 72
BMAR switch in XSPOOL 79
book mode 49
BREAK 18
BREAK 1 X 19, 24
BREAK A 21
BREAK B 23
BREAK C 21
BREAK D 21
BREAK F 18, 24
BREAK H 21
BREAK key 15
BREAK L 21
BREAK N 20
BREAK O 18
BREAK P 20
BREAK Q 19
BREAK S 21
BREAK T 21
BREAK U 23
BREAK W 19
BREAK X 19, 24
BS 16
BS key 15
CALCOMP 8
CALL 18, 19, 24, 28, 32
CALL key 15
call, deferred 18
cameras, TV 21
CANCEL command 104
CAR device 8
carriage return 15, 17, 24, 34
CC switch in MAIL 88
CCONTINUE command 28
CDETACH command 29
CETV command 10, 49
CFORK command 29
channel number 21
channels, Data Disc 6, 19, 21, 31, 47
channels, private 21, 34
channels, public 21
character set 6, 15, 132
character set, full 18
CLEAR 16
CLEAR key 15
clear line editor 16
CLRUWP command 27
CMQ (job queue) 19
code, character 15, 132
command decoder 7, 15, 16
command files 40
commands, monitor 7
COMPILE command 11, 53
COMPILE switch in SNAIL 53, 57, 65
compiling programs 11
complaints, compliments, criticisms 95
CONLY switch in SNAIL 53, 57, 65
continuable 28
CONTINUE command 19, 28
CONTROL 17, 40
CONTROL key 15, 117
CONTROL key, Teletype 24
CONTROL-B, Teletype 24
CONTROL-BREAK 18, 20
CONTROL-BS 16
CONTROL-C, Teletype 24
CONTROL-CALL 18
CONTROL-CLEAR 18, 20
CONTROL-D 16
CONTROL-FORM 16
CONTROL-I 16
CONTROL-I, Teletype 24
CONTROL-K 16
CONTROL-K, Teletype 24
CONTROL-L, Teletype 24
CONTROL-META-LINE 18
CONTROL-number 16
CONTROL-O, Teletype 24
CONTROL-R 16
CONTROL-RETURN 16, 17
CONTROL-S 16
CONTROL-SPACE 16
CONTROL-TAB 16
CONTROL-U, Teletype 24
CONTROL-Z, Teletype 24
CONVERT switch in COPY 72
COOKIE (LOGIN option) 34
COPY 37, 68
COPY command 37
core see storage, core
CORE command 27
core image 5, 7, 11, 13, 19, 25, 27, 33, 42
COUNT switch in MAIL 88, 90
CREATE command 49
CREF command 64
CREF switch in SNAIL 57, 64, 65
CSTART command 28
CTRL key, Teletype 24
CTY device 8, 32
cursors 6, 16
DAC device 8
DART 39, 106
data 8
Data Discs 6, 16, 19, 20, 21
DATE (in WHO line) 19
DATE switch in MAIL 88, 89
DAY (in WHO line) 19
DAY filehack in COPY 70
DAYTIME command 7, 31
DCQ (job queue) 19
DD (in WHO line) 19
DDT 27, 28, 48, 58, 131
DDT command 28
DDT switch in SNAIL 58, 65
DDT, Executive 47
DE (deposit) command 27
DEASSIGN command 30
DEBUG command 53
debugging program see DDT or RAID
DECtape 8, 19, 41, 124
default file protection, UFD's 72
Defense, Department of 115
deferred call 18
delete 15, 132
delete channel 21
DELETE command 37, 73
delete piece of glass 22
DELETE switch in SPOOL 75
deletion of REMINDers, LATER requests, and queued MAIL 104
DENSITY switch in COPY 72
deposit in core see DE
DET (in WHO display) 42
DET (in WHO line) 19
DETACH command 29, 47
detached jobs 19, 29, 40, 42
DEV privilege 47
device 30, 31, 123
device name 8, 47
device name, logical 8, 30
device name, physical 8, 30
device names, list of 8
DIAL command 46, 117
DIGEST (LOGIN option) 34
DIGEST filehack in COPY 70
DIOW (job queue) 19
directories 8
DIRECTORY command 37, 73
directory device 8, 30
directory, telephone 44
DIRED program 46
DISABLE command 47
disk 8, 19, 26, 30, 31, 32, 37, 39, 41
disk PPN see alias
display see terminals, display
DIST switch in MAIL 88
DMP files 8, 11, 26, 65
DO 52, 60
DO command 40
documentation, program 5, 131
DOWN filehack in COPY 70
DRD command 46
DSK device see disk
DSKOPS (in WHO line) 19
DSKQ (in WHO line) 19
DSPOOL switch in COPY 72
DTA device see DECtape
DTQ (job queue) 19
DUMP command 106
dump file see DMP files
DUMP switch in SPOOL 75
DUMPED switch in COPY 72
DWQ (job queue) 19
E 10, 15, 18, 48, 131
E (examine) command 27
E switch in MAIL 88
ECHO (in TTY command) 24
ECHO (LOGIN option) 34
EDDT command 47
EDIT command 49
editing 10
editor, display 10, 49
editor, line see line editor
ENABLE command 47
end of file 18, 24
EOT command 106
error messages 130
ESC 18
ESC 1 X 19, 24
ESC A 21, 22
ESC B 23
ESC C 21
ESC D 21, 22
ESC E 20
ESC F 18, 24
ESC G 20
ESC H 21
ESC I 18
ESC J 20
ESC key 15
ESC L 20
ESC M 21
ESC N 20
ESC O 18
ESC P 20
ESC Q 19
ESC R 20
ESC S 21, 22
ESC T 21
ESC U 23
ESC W 19, 29
ESC X 19, 24
ESC Y 20
ESCAPE, Teletype 24
ETV command 10, 49
ETV editor see E
EVEN switch in COPY 72
EVENT command 96
examine core see E
EXECUTE command 11, 53
EXPAND switch in MAIL 88
extension 8
extensions, standard 8
EXTRA switch in COPY 72
EXTRA switch in SPOOL 75
F4 switch in SNAIL 53, 65
F40 48, 131
FACT.TXT file 75
FAIL 5, 48, 131
FAIL switch in SNAIL 53, 65
FAILED.TXT file 91
FAST (LOGOUT option) 35
FAST switch in COPY 72
FF switch in SPOOL 75
file directory see directory
file protection 34
file storage 8
File Transfer Protocol 46, 115, 119
filenames 8
FILES command 31
files, disk 8, 19
FILL (in TTY command) 24
FILL (LOGIN option) 34
FIND command 44
FINGER command 12, 35, 45
FINISH command 30
FIXIMLAC command 46, 114
FLUSH command 30, 47
FONT switch in COPY 72
FONT switch in XSPOOL 79
FOO switch in COPY 72
FORK command 29
form feed 15, 24, 70
FORM key 15
FORTRAN 48, 131
FORTRAN switch in SNAIL 65
FORTRAN switch in SPOOL 75
fortune cookie 34
FORWARD switch in SNAIL 60, 65
FTP command 46, 115, 119
FUDGE2 59
FULL (in TTY command) 24
FULL (LOGIN option) 34
full character set mode 18, 34
FULL switch in COPY 72
GET command 26
glass, pieces of 20, 22
glitch 20
graphics 6, 20
GRIPE (LOGIN option) 34
GRIPE command 95
GRIPES filehack in COPY 70
GTOTAL switch in COPY 72
guest account 30, 34
HALT command 28
HEADER switch in COPY 72
HEADER switch in MAIL 88
HEADING switch in SPOOL 75
HELLO command 31
HELP command 12, 45
HIDE (LOGIN option) 34
HOLD switch in SPOOL 75
holding, automatic 18, 20
HOT command 46
I/O see device
IGNI switch in COPY 72
IGNO switch in COPY 72
III (in WHO line) 19
IIIs 6, 16, 20, 22
IMLAC 46
IMP device 8, 115
Increment (in TIME command) 31
information, system 5, 12, 31, 42
INIT (LOGIN option) 34
input buffer 7, 17, 18, 32, 40
Interface Message Processor see IMP
interrupt 15
Introduction for New Users 3
Introduction to Terminals 6
INTW (job queue) 19
IOWQ 19, 28
IOWQ (job queue) 19
JBS (in WHO line) 19
JLOG 29, 42, 47
JOB (in WHO display) 42
JOB (in WHO line) 19
Job Data Area 13, 27, 28
job name 26, 42, 45
job number 5, 7, 9, 29, 30, 31, 32, 42, 45
JOBDDT 27, 28
JOBFF 27
JOBNAM (in WHO display) 42
JOBNAM (in WHO line) 19
JOBPC 28
JOBRD 19
JOBREN 28
jobs 19
JOBSA 13, 28
KATTACH command 35
keyboard scanner 15, 18
keyboards 15
KIL privilege 47
KILL command 32, 47
KILL switch in COPY 72
KJOB command 9, 35
KLOG command 35
L switch in E 49
languages, programming 5, 131
LATER command 99
LATER requests, deleting 104
letters, lower case 7, 8, 18, 24
LIBRARY switch in SNAIL 53, 59, 65
LINE see line feed
LINE (in WHO display) 42
line editor 6, 15, 16, 17, 18, 20
line feed 15, 17, 24
LINE key 15
line number, terminal 21, 31, 42
line numbers, SOS 10, 72, 75
line printer see printer, line
LINK 48, 116
LINK switch in SNAIL 58, 65
LISP 5, 40, 131
LISP command 46
LIST command 37, 73
LIST switch in COPY 72
LIST switch in MAIL 88
LIST switch in SNAIL 57, 65
LMAR switch in XSPOOL 79
LOAD command 11, 53
LOADER 27, 28, 48, 65
LOADER switch in SNAIL 58, 65
loader switches 62, 66
loading programs 11
local user 34, 46
LOCATE command 106
LOCK 19
LOGGER 116
logical device name see device name, logical
LOGIN command 5, 7, 9, 34
login, automatic 7
LOGOUT 9, 10, 35
LOGOUT command 35
logout, automatic 5
LOGOUT.MSG file 35
LOGRUN 34
LOGRUN (LOGIN option) 34
LONLY switch in SNAIL 53, 57, 65
lower segment 13
LPT device see printer, line
LPT0 switch in SPOOL 75
LPT100 switch in SPOOL 75
MACRO 48, 131
MACRO switch in SNAIL 53, 65
magnetic tape 8, 19, 26, 30, 39, 125
MAIL 34, 38, 82, 83
MAIL command 34, 92
MAIL error recovery 101
MAIL filehack in COPY 70
MAIL switch in MAIL 88
mail, ARPA network 91
mail, deleting queued 104
MAIL, interfacing with, from other programs 103
MAIL.TXT file 84, 101
maintenance mode 34
MAKE command 49
MAP switch in SNAIL 58, 65
mapping 21
ME (LOGIN option) 34
ME (LOGOUT option) 35
memory stops 128
MESSAG (LOGIN option) 34
messages, sending and mailing 83
messages, system 9, 34, 92, 96
META 16, 17, 40
META key 15
META-BS 16
META-CALL 18
MICRO-PLANNER 5
MLENGTH switch in COPY 72
MODE switch in SPOOL 75
monitor mode 7, 9, 15, 18, 26, 28, 29, 32
MSG filehack in COPY 70
MTA device see magnetic tape
MTQ (job queue) 19
Multics 119
N switch in E 49
NAP filehack in COPY 70
NARROW switch in SPOOL 75
NCP 116
New York Times 46
news service see NS
NL (in WHO line) 19
NO switch in MAIL 88
NOARROW (LOGIN option) 34
NOCMFI switch in SNAIL 53, 65
NOCOPY switch in SPOOL 75
NODELETE switch in SPOOL 75
NODIST switch in MAIL 88
NODMP switch in SNAIL 53, 58, 65
NODUMP switch in SNAIL 58
NODUMP switch in SPOOL 75
NOECHO (LOGIN option) 34
NOFF switch in COPY 72
NOFF switch in SPOOL 75
NOFILL (LOGIN option) 34
NOFORTRAN switch in SPOOL 75
NOFULL (LOGIN option) 34
NOHEADING switch in SPOOL 75
NOLOAD switch in SNAIL 53, 60, 65
NOMAIL (LOGIN option) 34
NOMAIL switch in MAIL 88
NONARROW switch in SPOOL 75
NONUMBER switch in SPOOL 75
NONUMBERS switch in COPY 72
normal activation mode 17
NOSAISEG switch in SNAIL 58, 65
NOSPACES switch in COPY 72
NOTABS (LOGIN option) 34
NOTICE filehack in COPY 70
NOTICE.TXT file 34, 92, 96, 105
NOTITLE switch in SPOOL 75
NOWARN switch in SPOOL 75
NOXGP switch in XSPOOL 79
NS 34, 105
NS command 46
NS filehack in COPY 70
NTNODE switch in XSPOOL 79
null job 31, 42
null-time 19
NULQ (job queue) 19
NUMBER switch in SPOOL 75
number, line see line numbers
NVNODE switch in XSPOOL 79
OCTAL switch in SPOOL 75
ODD switch in COPY 72
OFFSET switch in COPY 72
old mode (UDP) 30
operator 32
OPTIMIZE switch in COPY 72
OPTION filehack in COPY 70
OPTION.TXT file 34, 35, 105
OUTGO.MSG file 85, 105
output buffer 18
P switch in E 49
page printer 20, 22
Page-Seconds 31
pages 13
paging, telephone 23
PAL 48
PALX switch in SNAIL 53, 65
paper tape 8
paper, pieces of 20
password 34, 41
PDP-10 4, 5, 15, 19, 42
PDP-10 console 8, 32, 47
PDP-6 19, 42
PGX pseudo-device (COPY) 71
phantom 29, 42, 47
physical device name see device name, physical
pieces of glass 20
pieces of paper 20
PJOB command 31
PL (in WHO display) 42
PLAN command 97
plan file 45, 70, 97, 105
PLAN filehack in COPY 70, 97
PLN filehack in COPY 70, 97
plotter 8
PMAR switch in XSPOOL 79
PORNO (LOGIN option) 34
POX 48
POX command 51
PPN 5, 8, 9, 19, 29, 31, 32, 34, 35, 45, 47
PPN (in WHO display) 42
PPN (in WHO line) 19
PPN, disk see alias
PPPN command 31
PREFIX, Teletype 24
PREPARE command 53
PRI privilege 47
PRINT command 37, 73
printer, line 8, 30, 37, 73, 75, 123
private device 30
privileged commands 47
PROCESS command 52
PROCESSOR switch in SNAIL 60, 65
programmer name 5, 19, 32, 38, 45
programs, display 20, 22
programs, system 5, 25, 26, 33
programs, system information 7, 12
project name 5
project-programmer name see PPN
protection 34
PROTECTION switch in COPY 72
PS (in TIME command) 31
pseudo-teletype see PTY
PTP device 8
PTR device 8
PTTY command 31
PTY 8, 35, 42
PTYJOB 117
PUB 46, 48, 131
PUB command 51
public device 30
QMAINT (LOGIN option) 34
QSPOOL 80
QSPOOL command 37
queue 45
QUEUE (in WHO display) 42
QUEUE (in WHO line) 19
queue names 19
QUEUE switch in MAIL 88
queued local mail 92
queued mail 88, 91, 92, 98
queued mail, deleting 104
QUIET switch in COPY 72
R (in WHO line) 19
R command 26, 33
R switch for editors 49
RAID 27, 28, 48, 58, 131
RAID switch in SNAIL 58, 65
RCOR (in WHO line) 19
RCV 105
READ command 49
REASSIGN command 30
RECOPY switch in SPOOL 75
records 8
REENTER command 28
REFERENCED switch in COPY 72
refresh 20
REL files 8
REL switch in SNAIL 53, 65
reloading 129
relocatable binary 8, 11
REMIND command 94
reminders, deleting 104
remote terminal 24
RENAME command 37, 73
RENAME switch in COPY 72
REPEAT switch in SPOOL 75
request for connection 116
request for new message 116
RER command 52
RERUN command 52
RESET 20, 26, 27
RESOURCES command 31
RESTORE command 106
retrieve last line 16
RETRY command 98
RETURN see carriage return, 17
RETURN key 15, 16
REWIND command 106
RFC 116
RFNM 116
RMAR switch in XSPOOL 79
RP (in WHO line) 19
RPG 35, 40
RPG filehack in COPY 70
RPGSAV (LOGOUT option) 35
RSL command 46, 107
RTIME 19
RUBOUT, Teletype 24
RUN command 26
run time 31, 42, 45
running programs 11, 26
RUNQ (job queue) 19
RUNTIME (in WHO line) 19
runtime, incremental 19
SAI files 8
SAIL 5, 48, 131
SAIL switch in SNAIL 53, 65
SAVE command 27
SAVE switch in COPY 72
SAVE switch in SNAIL 58, 65
SAVED.MSG file 105
scanner, keyboard see keyboard scanner
scrolling 20
SEARCH switch in COPY 72
SEG (in WHO display) 42
segment, lower see lower segment
segment, upper see upper segment
segments 13
SEGNAM (in WHO line) 19
select audio channel 23
select channel 21
select piece of glass 22
SEND command 93
SEND switch in MAIL 88
service level 31, 42, 46
SETPR2 130
SETUWP command 27
SHIFT key, Teletype 24
SHIFT keys 6, 15
SHIFT LOCK key 6, 15, 18
SIZE (in WHO display) 42
SIZE (in WHO line) 19
SL (in WHO display) 42
SLEEP 19
SLEVEL command 31
SNAIL 10, 36, 48
SNDMSG see MAIL program
SOCKET 116
SOS 10, 48, 49, 131
SOS representation 24
Spacewar 5
spacewar module 19, 42
special activation mode 17
SPOOL command 37, 75
SPOOL switch in COPY 72
spoolers 37, 71
SSAVE command 27
Stanford ASCII 15
START command 28
starting programs 28
status, system 19
STOP (job queue) 19
stop typeout 18, 24
storage, core 5, 13, 19, 128
SUBJECT switch in MAIL 88
suspend typeout 18, 24
SW10 (in WHO display) 42
SW6 (in WHO display) 42
switch, audio see audio switch
switch, video see video switch
SYS device 8, 26, 30
SYSTAT command 45
system messages 92, 96
system programs 26
system WHO line see WHO line
TAB 16, 24
TAB key 15
TABS (in TTY command) 24
TABS (LOGIN option) 34
tabs, hardware 24
TALK command 32, 47
talk ring 32
tape, magnetic see magnetic tape
tape, paper 8
TCOR (in WHO line) 19
TECO 10, 48, 49, 131
TECO command 49
Teletypes 6, 10, 24, 34, 42, 46, 71
TELNET 46, 115, 116, 117
TELNET command 46, 115, 117
terminal 7, 8, 24
terminals 24
terminals, display 6, 15, 20, 42
TEST command 46
text nodes 79
tick 19, 42
TIME (in TTY command) 24
TIME (in WHO display) 42
TIME (in WHO line) 19
TIME command 31
TIME switch in COPY 72
TIME switch in MAIL 88, 89
timesharing 4
TITLE switch in COPY 72
TITLE switch in SPOOL 75
TLIST command 106
TLK privilege 47
TMAR switch in XSPOOL 79
TMPCOR 35
TN command 46, 115, 117
TOP key 6, 15
TPL pseudo-device (COPY) 71
TQ (job queue) 19
TRANSFER command 37, 73
TRY command 53
TTY (in WHO line) 19
TTY command 24
TTY device see terminal; Teletypes
TTYUUO 24
TV device 8
TV, lounge 21
TYPE command 37, 73
typeahead 7
UCOR (in WHO line) 19
UDP 8, 30, 31, 41, 46, 71, 127
UDPUFD command 46
UFD 8
UFD protection 72
UFDPRO switch in COPY 72
UNHIDE (LOGIN option) 34
UNSPOOL 81
UNSPOOL command 37
UPDATE (in TTY command) 24
upper segment 13, 19, 27, 42
user disk pack see UDP
User File Directory 8
user mode 7, 28
user, authorized 9
UTPCLR 41
UUOs 4, 5, 17
vector 6
vector nodes 79
vertical position 20
vertical tab 15
video switch 21
volleyball players 85
VT 24
VT key 15
Wait (in TIME command) 31
WAIT switch in COPY 72
wait time 19
WARN switch in SPOOL 75
whams 107
WHERE command 12, 45
WHERE switch in MAIL 88
WHO (in TTY command) 24
WHO (LOGIN option) 34
WHO command 7, 12, 42
WHO line 6, 19, 24, 29, 31, 34, 42
WIDTH (in TTY command) 24
WIDTH (LOGIN option) 34
WRITER switch in COPY 72
XEROX command 46
Xerox Graphics Printer see XGP
XFACT.TXT file 75
XGP 8, 37, 75, 79, 126
XGP switch in XSPOOL 79
XGPLIST command 37, 73
XLINE switch in XSPOOL 79
XP (in WHO line) 19
XSPOOL command 37, 75, 79
XTIME 19, 24
XTIME (in WHO line) 19
YESMAIL switch in MAIL 88
ZERO command 41